如何检查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
我创建了一个引导接收器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