android.permission.RECEIVE_BOOT_COMPLETED
私のアプリがマニフェスト ファイルにアクセス許可を持っていない場合でも、私のアプリケーションがまだ ACTION_BOOT_COMPLETED ブロードキャストを受信する理由を知っている人はいますか? 必須だと思っていましたが、使用したいくつかのチュートリアルにもありませんでした。いくつかはそうしました。テスト用に CyanogenMod を実行している携帯電話を使用していますが、それが問題になるとは思えません。LogCat は、起動のたびに「起動の通知」ログを表示します。使用するコードについては、以下を参照してください。
AndroidManifest.xml
<receiver android:name="AlarmReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
AlarmReceiver クラス
public class AlarmReceiver extends BroadcastReceiver {
private static final String TAG = "MyProgram";
@Override
public void onReceive(Context context, Intent intent) {
try {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Log.d(TAG, "Notified of boot");
}
Intent newIntent = new Intent(context, MyService.class);
context.startService(newIntent);
} catch (Exception e) {
Log.d(TAG, "An alarm was received but there was an error");
e.printStackTrace();
}
}
}
エミュレーターでこれを再訪し、Android 2.1、2.2、および 2.3 で「問題」を正常に再現しました。エミュレーターにはアプリがクエリするデータベースがないため、(予想どおり) ANR が返されます。マニフェストから宣言されたすべての使用権限を削除すると、アプリを使用しようとすると、予想される権限拒否エラーが発生します。ただし、起動時にブロードキャストされた ACTION_BOOT_COMPLETED インテントをまだ受け取ります。助言がありますか?