BroadcastReceiver不起作用

时间:2014-04-06 13:13:16

标签: android broadcastreceiver

我在清单

中添加了接收器
<receiver android:name=".PackageReceiver"
        android:enabled="true">
        <intent-filter android:priority="100">
            <action android:name="android.intent.action.PACKAGE_ADDED"/>
            <action android:name="android.intent.action.PACKAGE_REPLACED"/>
            <data android:scheme="package"/>
        </intent-filter>  
</receiver>

这是我的BroadcastReceiver

public class PackageReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {

    Log.e("noti", "sucess");
    //Start Notification Service
    Intent i = new Intent(context, NotificationService.class);
    context.startService(i);
}}

...

当我安装此软件包时,它无效......

这个包没有活动。(只有服务和资源)

这是一个问题吗?

然后..

如何在没有活动的情况下调用此包中的BroadcastReceiver?

2 个答案:

答案 0 :(得分:0)

您刚刚宣布并实施了一个BroadcastReceiver,但您还没有启动它,您需要一个入口点来启动您的接收器(活动或服务)

这是注册的代码

PackageReceiver packageReceiver= new PackageReceiver(this);
registerReceiver( packageReceiver, new IntentFilter("android.intent.action.PACKAGE_ADDED"));

答案 1 :(得分:0)

这是一个经常被问到的问题。

查看此Commonsware blog

Starting with 3.1 when applications are installed they are in a “stopped” state so they will not be able to run until the user explicitly launches them. Pressing Force Stop will return them to this state.

应用程序中需要有一个用户可以启动的活动组件。当您的活动开始后,您的BroadcastReceiver将会被注册。