1

アプリケーションが SD カードにインストールされている場合、起動時にアプリケーションを起動するにはどうすればよいですか? アプリケーションが内部メモリにインストールされている場合、BOOT_COMPLETED完了したブロードキャストを使用して要件を達成できますが、この BOOT_COMPLETED インテントはメディアがマウントされる前にブロードキャストされるため、このブロードキャストは使用できません。

これまでに試したことは、MEDIA_MOUNTEDブロードキャストが受信されない理由がわからないという別の意図を使用したことです。

これが私のコードです:
AndroidManifest.xml

<receiver
            android:name=".ui.Receiver"
            android:enabled="true" >
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_MOUNTED" />
                <data android:scheme="file" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE" />
                <action android:name="android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_REPLACED" />

                <data android:scheme="package" />
                <data android:path="org.sipchat.sipua" />
            </intent-filter>
        </receiver>

レシーバー.java

public void onReceive(Context context, Intent intent) {
        String intentAction = intent.getAction();
        if (intentAction.equals(Intent.ACTION_BOOT_COMPLETED)) {
            Toast.makeText(context, "BOOT Completed", Toast.LENGTH_LONG).show();
            on_vpn(false);
            engine(context).register();
        } else if (intentAction.equals(Intent.ACTION_MEDIA_MOUNTED)) {
            Toast.makeText(context, "Media is Mounted", Toast.LENGTH_LONG)
                    .show();
            engine(context).register();
        } else if (intentAction.equals(ConnectivityManager.CONNECTIVITY_ACTION)
                || intentAction.equals(ACTION_EXTERNAL_APPLICATIONS_AVAILABLE)
                || intentAction
                        .equals(ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE)
                || intentAction.equals(Intent.ACTION_PACKAGE_REPLACED)) {
            engine(context).register();}}

任意のヘルプと提案をいただければ幸いです
ありがとう

4

1 に答える 1

0

端末の起動時にアプリケーションが起動するのは、Android バージョン 3.0 未満で動作するためです。詳細については、この投稿を参照してくださいLink 01

于 2012-10-04T10:56:03.063 に答える