Android - Как запустить приложение на /sdcard после загрузки
Есть ли способ, как запустить приложение для Android после загрузки автоматически, если он находится на /sdcard
?
Хорошо, наверное BroadcastReceiver
, Но какое действие является правильным?
ACTION_BOOT_COMPLETED - does not work if it is on the /sdcard (documented)
ACTION_MEDIA_MOUNTED - does not work if it is on the /sdcard (which is undocumented)
ACTION_EXTERNAL_APPLICATIONS_AVAILABLE - does not work, I do not know why
ACTION_USER_PRESENT - does not work if the BroadcastReceiver is registered in AndroidManifest (which is undocumented, but documentation bug has been reported)
Спасибо
январь
4 ответа
Пожалуйста, укажите это в файле манифеста.
</uses-permission>
<receiver android:name=".BootReceiver"
android:enabled="true"
android:exported="true"
android:label="BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
предоставить разрешение "android.permission.RECEIVE_BOOT_COMPLETED" как дочерний элемент menifest.
и еще одна вещь, ваше приложение не должно быть установлено в SDCard.
По словам Google, вы не должны помещать любое приложение, которое вы хотите запустить при загрузке, на внешний диск.
"Система доставляет трансляцию ACTION_BOOT_COMPLETED до того, как внешнее хранилище подключено к устройству. Если ваше приложение установлено на внешнее хранилище, оно никогда не сможет получить эту трансляцию".
http://developer.android.com/guide/topics/data/install-location.html
Попробуйте использовать <receiver android:name=".BootCompleteReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
и это <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
возможно, QUICKBOOT_POWERON поможет вам
Я обычно регистрирую каждый фильтр намерений для приемника вещания в обоих направлениях (манифест Android, а также динамически в классе, расширяющем Application)
В AndroidManifest.xml как:
<receiver
android:name=".broadcastReciever"
android:enabled="true"
android:exported="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE" />
</intent-filter>
</receiver>
и в классе, который расширяет приложение:
registerReceiver(new broadcastReciever(), new IntentFilter(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE));
и не забудьте добавить RECEIVE_BOOT_COMPLETED
разрешение и зарегистрировать класс, который расширяет приложение в манифесте Android.
Это должно сделать; не стесняйтесь просить больше помощи / разъяснения.