Mar*_* G. 5 java xml android broadcastreceiver android-context
我必须在一个我必须在Activity中调用的类中使用BroadcastReceiver.显然,我必须注册BroadcastReceiver然后我写了这段代码:
public class MyClassName {
Context context;
BroadcastReceiver batteryInfoReceiverLevel;
public void CheckBatteryLevel() {
Log.d("App", "I'm in the CheckBatteryLevel");
context.registerReceiver(batteryInfoReceiverLevel, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
batteryInfoReceiverLevel = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Apps", "I'm in the onReceive");
int level= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);
if(level <=100) {
//Do something
}
else if(level >=100) {
//Do something
}
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,应用程序崩溃给出" Error receiving broadcast Intent { act=android.intent.action.BATTERY_CHANGED flg=0x60000010 (has extras) }并且崩溃线是
context.registerReceiver(batteryInfoReceiverLevel, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
这里有两个问题:
\n\n\xcf\x81\xd1\x8f\xcf\x83\xd1\x95\xcf\x81\xd1\x94\xd1\x8f K 指出了第一个:
\n\n通过将参数添加到方法 CheckBatteryLevel() 或 MyClass 的构造函数\n来初始化上下文
\n\npublic class MyClass(Context ctx) {\n context = ctx;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n其次,您必须在初始化 BroadcastReceiver 后调用 registerReceiver(..)。否则它将为空且未注册。
\n\n总而言之,应该这样做:
\n\npublic class MyClassName {\n\n BroadcastReceiver batteryInfoReceiverLevel;\n\n public void CheckBatteryLevel(Context ctx) {\n\n Log.d("App", "I\'m in the CheckBatteryLevel");\n\n batteryInfoReceiverLevel = new BroadcastReceiver() { // init your Receiver\n\n @Override\n public void onReceive(Context context, Intent intent) {\n\n Log.d("Apps", "I\'m in the onReceive");\n int level= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);\n if(level <=100) {\n //Do something\n } else if(level >=100) {\n //Do something\n }\n }\n };\n // register your Receiver after initialization \n ctx.registerReceiver(batteryInfoReceiverLevel,\n new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); \n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3769 次 |
| 最近记录: |