如何检查boot receiver是否工作?

how to check whether boot receiver is working?

我创建了一个引导接收器class:

public class BootReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
         Log.d("Boot receiver","Working")
    }
}

我的清单文件:

 <receiver android:name="com.voonik.android.receivers.BootReceiver">
       <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
       </intent-filter>
 </receiver>

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

我使用了 adb 命令 - am broadcast -a android.intent.action.BOOT_COMPLETED

还是不能确定是不是working.How我可以测试一下吗?

我认为您错过了接收时的@Override。

@Override
public void onReceive(Context context, Intent intent) {
 Log.d("Boot receiver","Working")
}

在我的清单中;

 <receiver
    android:name=".BootUpReceiver"
    android:enabled="true"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
     <intent-filter>
       <action android:name="android.intent.action.BOOT_COMPLETED" />    
       <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
 </receiver>

和;

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

在BootUpReceiver.java我有;

public class BootUpReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

        Intent i = new Intent(context, Main.class);  
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);  
    }    
}

您应该只能在 logcat 中看到您的登录信息,请尝试使用 System.out.println("BOOT RECEIVED"); 而不是日志

请记住,包有不同的状态(主要变化来自 Android 3.1)。
如果用户不是自己打开应用程序(至少一次),那么您的包裹将不会收到此意图。

否则在没有用户交互的情况下很容易运行一些恶意代码。

出于安全原因,您可以想象。 您可以在那里找到更多信息:Trying to start a service on boot on Android

除非您将 APK 放在 /system/apps 文件夹中并使用系统证书对其进行签名。

P.S.: 有一些标志可以传递给你的意图,你可能会感兴趣 FLAG_INCLUDE_STOPPED_PACKAGES