android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE какая польза?

Я пытаюсь выполнить метод OnReceive при запуске Android, чтобы я мог запланировать задачу.

К сожалению, onReceive моего BradcastReciever вызывается при загрузке, только если я устанавливаю приложение в корневой системе. Я думал, что android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE должен решить проблему.

Но из этого поста кажется, что это невозможно, хотя в некоторых уроках говорится, что это возможно.

Android установить расположение и BOOT_COMPLETED

Я должен сделать вывод, что я не могу сделать такую ​​вещь.

Это действительно так или есть способ получить трансляцию при запуске с моим приложением на SD.

Если это невозможно, я задаюсь вопросом, в чем польза от android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE

Это мой манифест на случай, если кто-то захочет посмотреть. Я тестирую на Android 2.3.7

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="mypackage"
    android:installLocation="preferExternal"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

.............................    

        <receiver
            android:name="mypackage.MyNotificationReceiver"
            android:enabled="true"
           >
            <intent-filter android:priority="1" >
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" />
            </intent-filter>

        </receiver>


    </application>

</manifest>

Спасибо

1 ответ

Решение

Сначала нужно разделить фильтр намерений. Примерно так:

<receiver
    android:name="mypackage.MyNotificationReceiver"
    android:enabled="true"
    >
    <intent-filter android:priority="1" >
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" />
    </intent-filter>
</receiver>

Каждый фильтр должен иметь только одно действие. Во-вторых, вопрос: ACTION_EXTERNAL_APPLICATIONS_AVAILABLE всегда происходит через некоторое время после BOOT_COMPLETED (устройство сначала завершает загрузку, затем читает карту). Так почему оба действия?

Другие вопросы по тегам