无法通过Packet Manager启动广播接收器

时间:2012-03-16 04:31:27

标签: android

我可以使用以下方式启动广播接收器吗?有人可以让它运行,但我不能。我不知道为什么。

PackageManager pm  = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName("brd2.demo", "brd2.demo.BroadcastReceiver");
pm.setComponentEnabledSetting(componentName,
                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                        PackageManager.DONT_KILL_APP);

这是我的Android清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="brd2.demo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name="brd2.demo.BroadcastReceiverDemo2Activity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver  android:name="brd2.demo.CallBroadcastReceiver">
            <intent-filter >
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter> 
            <intent-filter >
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter> 
        </receiver>
    </application>

</manifest>

请帮助我。

1 个答案:

答案 0 :(得分:1)

如果您正在注意在接收器中添加适当的操作。

如果你的接收器类是 扩展广播接收器,然后系统会小心呼叫你的广播接收器。

您不需要手动启动广播接收器(除非您正在创建自定义广播)。

如果CallBroadcastReceiver正在扩展BroadcastReceiver并且您已在onReceive方法中编写了适当的逻辑,那么当您拨打新电话或电话响铃时,此课程将自动被调用

希望得到这个帮助。