android - 如何处理在 Activity 中创建的广播?

标签 android android-activity broadcastreceiver

我在 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>

但我以这种方式得到了异常(exception)。 异常(exception)是。

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

当我创建副 Activity 时,我成功地完全运行了我的应用程序但是 我想在我的 Activity 而非外部 Activity 中使用这个broadcastreceiver。 如何避免这个异常

最佳答案

内部类必须是静态类。

改变

public class AppManagerBroadcast extends BroadcastReceiver

public static class AppManagerBroadcast extends BroadcastReceiver

关于android - 如何处理在 Activity 中创建的广播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25787311/

相关文章:

android - ACTION_CONNECTION_STATE_CHANGED 是否在蓝牙 RFCOMM/SPP 连接发生变化时广播?

java - 广播接收器泄露

带有广播接收器和隐式广播禁令的 Android 8.0 Oreo AlarmManager

java - 如何在屏幕中心绘制一些东西? - 安卓

android - Xamarin Android Player 无法运行 API 21 或更高版本的模拟器

android - 从 SMS REACT NATIVE 读取消息

android - 完成后如何从最近的任务中删除具有 taskAffinity 的 singleTask Activity ?

android - 在 Android 中,如果操作系统终止了我的应用程序,getIntent() 会返回具有相同附加功能的 Intent 吗?

android - APK 无法上传到 Google Play 商店

java - Activity 未在 AndroidManifest.xml 中声明,即使它是