getIntent в излъчващ приемник недефиниран android

В моето приложение имам чакащо намерение, че когато се излъчва, когато изискванията му са изпълнени, това се слуша от приемник за излъчване. След това този приемник за излъчване прави това, което искам да прави, но трябва да добавя екстри от една дейност към друга и използвам intent.putExtra, за да направя това. `

В рамките на моя клас на приемник обаче методът getIntent() е недефиниран. Как работи, когато го използвам с чакащи намерения, тъй като работи с всички други мои намерения.

Това е моят targetdistance.class: (настройва излъчване и чакащо намерение)

package com.example.drivetext;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.location.LocationManager;
import android.os.Bundle;

public class targetdistance extends Activity {

double finalc1;
double finalc2;
int finalsd;
String finalmessage;
String finalnumber;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.target);

    LocationManager locationManager;
    locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    String provider = LocationManager.GPS_PROVIDER;

    Intent intent = getIntent();
    String contactNo;
    contactNo = intent.getStringExtra("PhoneNumber");
    finalnumber = contactNo;
    String message;
    message = intent.getStringExtra("TextMessage");
    finalmessage = message;
    double coord1 = 0;
    coord1 = intent.getDoubleExtra("Coordinate1", coord1);
    finalc1 = coord1;
    double coord2 = 0;
    coord2 = intent.getDoubleExtra("Coordinate2", coord2);
    finalc2 = coord2;
    int seldis = 0;
    seldis = intent.getIntExtra("SelectedDistance", seldis);
    finalsd = seldis;

    LocationManager lm;
    double lat = finalc1;
    double long1 = finalc2;    //Defining Latitude & Longitude
    float radius=finalsd;                         //Defining Radius

           lm=(LocationManager) getSystemService(LOCATION_SERVICE);
           Intent i= new Intent();
           i.putExtra("PhoneNumber", contactNo);
           i.putExtra("TextMessage", message);
           PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), -1, i, 0);              
           lm.addProximityAlert(lat, long1, radius, -1, pi);
       }   
}

Това е моят Receiver.class (приемникът за излъчване)

package com.example.drivetext;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.location.LocationManager;
import android.telephony.SmsManager;

public class Receiver extends BroadcastReceiver {

String finalnumber;
String finalmessage;

 @Override
 public void onReceive(Context arg0, Intent arg1) { 

     Intent intent4 = getIntent();
     String contactNo;
     contactNo = intent4.getStringExtra("PhoneNumber");
     finalnumber = contactNo;
     String message;
     message = intent4.getStringExtra("TextMessage");
     finalmessage = message;

  String k=LocationManager.KEY_PROXIMITY_ENTERING;
 // Key for determining whether user is leaving or entering 

  boolean state=arg1.getBooleanExtra(k, false);
  //Gives whether the user is entering or leaving in boolean form

  if(state){
   // Call the Notification Service or anything else that you would like to do here
   SmsManager smsManager = SmsManager.getDefault();
   String sendTo = finalnumber;
   String myMessage = finalmessage;
   smsManager.sendTextMessage(sendTo, null, myMessage, null, null);
   }

}
}

person Andrew Stewart    schedule 13.05.2014    source източник
comment
Къде изпращате BroadCast?   -  person Raghunandan    schedule 13.05.2014
comment
PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), -1, i, 0);   -  person Andrew Stewart    schedule 13.05.2014
comment
къде е sendBroadcast(intent);??   -  person Raghunandan    schedule 13.05.2014


Отговори (1)


В рамките на моя клас Receiver методът getIntent() обаче е недефиниран.

getIntent() е метод на клас активност. Можете да използвате arg1, което е параметър @ public void onReceive(Context arg0, Intent arg1) {

String contactNo;
contactNo = arg1.getStringExtra("PhoneNumber");

Трябва също да изпратите излъчването sendBroadcast(intent);

http://developer.android.com/reference/android/content/ContextWrapper.html#sendBroadcast%28android.content.Intent%29

person Raghunandan    schedule 13.05.2014