我在Activity
(ActionBarActivity
)内创建了BroadcastReceiver
像这样
public class MyTabListner extends ActionBarActivity {
.
.
.
public class AppManagerBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
boolean applicationStatus = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
String toastMessage = null;
if(intent.getAction().equals("android.intent.action.PACKAGE_INSTALL")){
toastMessage = "PACKAGE_INSTALL: "+ intent.getData().toString();
}else
if(intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")){
toastMessage = "PACKAGE_REPLACED: "+ intent.getData().toString() ;
}else
if(intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")){
toastMessage = "PACKAGE_REMOVED: "+ intent.getData().toString();
}
//Display Toast Message
if(toastMessage != null){
Toast.makeText(context, toastMessage, Toast.LENGTH_LONG).show();
}
}
}
.
.
.
}
我在manifest.xml中注册
像这样
<receiver
android:name="com.example.activity.MyTabListner$AppManagerBroadcast"
android:enabled="true" >
<intent-filter android:priority="1" >
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
但是我却以这种方式例外。
例外是。
09-11 17:45:46.434: E/AndroidRuntime(23502): FATAL EXCEPTION: main
09-11 17:45:46.434: E/AndroidRuntime(23502): java.lang.RuntimeException: Unable to instantiate receiver com.example.activity.MyTabListner$AppManagerBroadcast: java.lang.InstantiationException: can't instantiate class com.example.activity.MyTabListner$AppManagerBroadcast; no empty constructor
09-11 17:45:46.434: E/AndroidRuntime(23502): Caused by: java.lang.InstantiationException: can't instantiate class com.example.activity.MyTabListner$AppManagerBroadcast; no empty constructor
当我创建辅助活动时,我就可以完全运行我的应用程序,但是
我想在我的“活动”中使用此广播接收器,而不是在外部活动中使用。
如何避免这种异常
最佳答案
内部类必须是静态类。
更改
public class AppManagerBroadcast extends BroadcastReceiver
至
public static class AppManagerBroadcast extends BroadcastReceiver