我在ActivityActionBarActivity)内创建了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

07-24 09:46
查看更多