4

Play ストアの私のアプリの 1 つにBOOT_COMPLETED受信機があり、S4 まで問題はありませんでした。S4 ユーザーから、アプリが機能していないというメールを複数受け取りました。トラブルシューティングを行った後、BOOT_COMPLETED受信機が呼び出されません。

この特定のデバイスでこれを修正する方法を知っている人はいますか?

そのメインコードは次のとおりです。

public class BootCompletedIntentReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
        ...
        ...
        //ALL MY CODE IS HERE
        ...
        ...
    }
}
}

マニフェスト :

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

もちろん、私は正しい許可を持っています:

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

1 に答える 1

0

BOOT_COMPLETE は、外部ストレージがマウントされる前に送信されます。アプリが外部ストレージにインストールされている場合、BOOT_COMPLETE ブロードキャスト メッセージは受信されません。これを防ぐために、アプリケーションを内部ストレージにインストールできます。これは、menifest.xml にこの行を追加するだけで実行できます。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   android:installLocation="internalOnly"
    ... >

一部の HTC デバイスは、実際の再起動ではなく、深い休止状態に似た「高速起動」機能を有効にできるため、BOOT_COMPLETE インテントを与えるべきではありません。これを回復するには、受信者は次のようになります。

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

このプロセスは、Samsung Galaxy SM-T235Y Tab4 では機能しますが、 Samsung GT-S7852電話 では機能しません。関連スレはこちら

于 2015-10-04T20:50:51.080 に答える