【发布时间】:2014-09-11 12:20:39
【问题描述】:
我在 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
当我创建外部活动时,我成功地完全运行了我的应用程序,但是 我想在我的活动 不是外部活动中使用这个broadcastreceiver。 如何避免这个异常
【问题讨论】:
标签: android android-activity broadcastreceiver