我已经注册了一个名为CheckReceiver的BroadcastReceiver: -
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.captchachecker"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:icon="@drawable/ic_launcher"
android:installLocation="internalOnly"
android:label="@string/app_name"
>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".CheckReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
</application>
</manifest>
CheckReceiver代码: -
public class CheckReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Check Receiver", "Captcha Receiver called");
Toast.makeText(context, "Receiver called", Toast.LENGTH_SHORT).show();
Intent service = new Intent(context, CheckService.class);
startWakefulService(context, service);
}
}
问题是,当我按下电源按钮并选择关机选项时,不会调用BroadcastReceiver。 如果我使用以下方法重启设备: -
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
然后调用BroadcastReceiver。 我已经阅读过有关为BroadcastReceiver至少启动一次活动的信息,并在检查之前启动了2-3次活动。
答案 0 :(得分:1)
原来我曾经使用过: -
adb shell pm set-install-location 2
过去在我的设备上。应用程序安装到SD卡忽略: -
android:installLocation="internalOnly"
将应用程序移至手机后,它开始正常工作。要将应用移动到手机,请转到: -
设置 - &gt;应用 - &gt;您的应用并选择&#34;转到手机&#34;
所以,如果您的启动接收器不起作用。检查: -