Android - Как запустить приложение на / sdcard после загрузки - PullRequest
20 голосов
/ 21 апреля 2011

Есть ли способ, как запустить приложение 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)

Спасибо
Jan

Ответы [ 4 ]

1 голос
/ 15 сентября 2015

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

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

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

1 голос
/ 15 июля 2015

Пожалуйста, укажите это в файле манифеста.

</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.

0 голосов
/ 17 июля 2015

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

0 голосов
/ 14 августа 2013

Я обычно регистрирую каждый фильтр намерений для широковещательного приемника в обоих направлениях (манифест 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.

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

...