Boot_complete广播不起作用

时间:2015-08-14 10:17:12

标签: android broadcastreceiver

我的应用中有一个boot_completed广播,但它无效。该应用程序未安装在SD卡上。

Android manfest.xml

<receiver android:name="BootReceiver"
        android:enabled="true"
     android:exported="true">
     <intent-filter>
         <action android:name="android.intent.action.BOOT_COMPLETED" />

        </intent-filter> 
    </receiver>

Bootreceiver.java

package nl.bicknos.TWPD;

import android.content.BroadcastReceiver; import android.content.Context;
import android.content.Intent;
 public class BootReceiver extends BroadcastReceiver{
    @Override   public void onReceive(Context context, Intent intent) {
        Toast.makeText(this, "Gestart", Toast.LENGTH_SHORT).show();} }

我搜索过,我找到的解决方案无法正常工作

2 个答案:

答案 0 :(得分:2)

首先检查你是否在Manifest.xml中实现了

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

您的intent-filter应该是

 <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
 </intent-filter>

在广播中你必须添加

 @Override
public void onReceive(Context context, Intent intent) {
   Toast.makeText(context, "Gestart", Toast.LENGTH_SHORT).show();
}

注意:我猜你的错误是在你没有this时尝试context

修改

此外,您可以尝试制作Log.d代替Toast放置:

Log.d("Restarted", "I'm on BR");

如果您的BroadcastReceiver没有通话,请尝试将您的manifest接收方替换为:

<receiver android:name="nl.bicknos.TWPD.BootReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver>

很明显,但可能存在错误......你的<uses-permission>需要成为该元素的孩子......

让我知道它是否有效:)

答案 1 :(得分:0)

我找到了问题,这不是代码,而是我的手机。没有一个应用程序启动我的设备启动。因为我正在运行测试版,所以我降级了,现在它正在下降。