액티비티의 컨텍스트를 반환하는 함수를 생성하고 브로드 캐스트 리시버 내부에서이 컨텍스트를 사용했으며, 애플리케이션이 중지되지 않은 경우 수행해야하는 작업을 수행하지만 애플리케이션을 중지하면 컨텍스트를 가져올 수 없습니다. 액티비티가 null 값을 반환하므로 내 애플리케이션이 죽어도 방송 수신기에서 사용할 컨텍스트 값을 어떻게 유지할 수 있습니까? 브로드 캐스트 수신기에서 컨텍스트를 사용하는 방법?
이
문맥 객체를 반환하는 함수이고, 생성자는 주 활성OnCreate()
내부 호출 :
public class ContextGen {
static Context conGen = null;
public ContextGen(Context context) {
conGen = context;
}
public static Context returnContextGen() {
return conGen;
}
}
이 수신 SMS를 확인하는 방송 수신 장치이다
public class IncomingSms extends BroadcastReceiver {
// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();
@Override
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
// Context conOfMain = ContextGen.returnContextGen();
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage
.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage
.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
String message = currentMessage.getDisplayMessageBody();
// what i added to the code
Log.i("SmsReceiver", "senderNum: " + senderNum
+ "; message: " + message);
// Show Alert
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "
+ senderNum + ", message: " + message, duration);
toast.show();
if (message.equalsIgnoreCase("PI lock")) {
System.out
.println("lock entereeeeed =====================");
Context conOfMain = ContextGen.returnContextGen();
System.out.println("Context is" + conOfMain);
LockDevice lock = new LockDevice(conOfMain);
lock.lockDeviceNow();
abortBroadcast();
}}}}}
이 왜 방송 수신기에서 클래스 컨텍스트를해야합니까? –
은 브로드 캐스트 리시버 내부에서 일부 특정 작업을 수행하기 위해 컨텍스트가 필요한 일부 기능을 호출합니다. –