アプリケーションが 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();}}
任意のヘルプと提案をいただければ幸いです
ありがとう