4

電話を再起動して電源を入れた後、アプリを自動的に起動する必要があります。

AutoStart an Application at boot up で提供されているコードを使用しましたが、電話の再起動 (再起動) 後に Android アプリが自動的に起動するようになりました。

ここで、電話の再起動を行う代わりに、電話の電源オフ (電話のシャットダウン)オプションを使用したとします。電話の電源を入れた後、アプリが期待どおりに自動的に起動しません。私が見逃したことを説明してください。

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

<receiver android:enabled="true" android:name=".BootUpReceiver" 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>



public class BootUpReceiver extends BroadcastReceiver
{
    private static SharedPreferences aSharedSettings;

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        aSharedSettings = context.getSharedPreferences("MYPreferences", Context.MODE_PRIVATE);
        boolean isUserLoggedIn = aSharedSettings.getBoolean(kEY.AUTHENTICATED, false); 
        if(isUserLoggedIn) 
        {
Intent aServiceIntent = new Intent(context, HomeView.class);
                aServiceIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(aServiceIntent); 
}

    }
}

ありがとうございました。

4

5 に答える 5

3

電話を再起動する前に少なくとも1回手動でアプリケーションを起動し、「強制終了」しない場合、意図したとおりに機能しますか?

見て:

Android:ICSおよびGingerbreadのandroid.intent.action.BOOT_COMPLETED

ブート完了のリグレッションが確認されました

于 2012-12-20T12:01:15.837 に答える
2

追加してみてください

<category android:name="android.intent.category.LAUNCHER" />

それ以外の

<category android:name="android.intent.category.DEFAULT" />. 

また、isUserLoggedInの値も確認してください。

于 2012-12-20T12:01:46.260 に答える
2

いくつか試してみることができます。

まず、アプリinstallLocationがこれAndroidManifest.xmlに設定されandroid:installLocation="internalOnly"ていることを確認し、アプリがローカル ストレージにあることを確認します。BOOT_COMPLETESD カードにインストールされたアプリはインテントを受け取りません。

また、削除する<category android:name="android.intent.category.DEFAULT" />必要はありません。

最後に試すことができるのは、完全なパッケージ名を使用することです。

    <receiver android:enabled="true" 
              android:name="com.myapp.receivers.BootUpReceiver" 
              android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
于 2012-12-20T12:00:35.730 に答える
1

HTC デバイスを使用していますか? その場合、「Fast-Boot」と呼ばれる機能が有効になっている可能性があります

詳細については、このリンクを参照してください。

HTC の「高速ブート」が有効になっているかどうかを検出する

于 2012-12-20T11:58:53.243 に答える
1

アプリケーションを開始するアクティビティの名前、タグにこの行を追加します.....そして、それが機能したかどうかを教えてください

  <category android:name="android.intent.category.HomeView" />
于 2012-12-20T12:04:12.013 に答える