Подтвердить что ты не робот

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)

Спасибо
Ян

4b9b3361

Ответ 1

Просьба указать его в файле манифеста.

</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" как ребенок манифеста.

и еще одна вещь, которую ваше приложение не должно быть установлено на SD-карте.

Ответ 2

Согласно Google, вы не должны помещать любое приложение, которое хотите запускать при загрузке на внешний диск.

"Система доставляет трансляцию ACTION_BOOT_COMPLETED до того, как внешнее хранилище будет установлено на устройство. Если ваше приложение установлено во внешнем хранилище, оно никогда не сможет получить эту широковещательную передачу".

http://developer.android.com/guide/topics/data/install-location.html#ShouldNot

Ответ 3

Я обычно регистрирую каждый фильтр намерений для широковещательного приемника в обоих направлениях (Android Manifest, а также динамически в классе, расширяющем приложение)

В 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>

и в классе, который расширяет Application:

registerReceiver(new broadcastReciever(), new IntentFilter(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE));

и не забудьте добавить разрешение RECEIVE_BOOT_COMPLETED и зарегистрировать класс, который расширяет приложение в манифесте Android.

Это должно быть сделано; не стесняйтесь обращаться за дополнительной помощью/разъяснениями.

Ответ 4

попробуйте использовать <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 help u