android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE有什么用?

时间:2013-07-11 08:14:14

标签: android broadcastreceiver boot

我正在尝试在Android启动时执行OnReceive方法,以便我可以安排 一项任务。

不幸的是,只有当我在应用程序上安装应用程序时才会在启动时调用我的BradcastReciever 根系统。我以为android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE 应该解决问题。

但是从这篇文章来看,似乎不可能,但在某些教程中 他们说这是可行的。

Android installLocation and BOOT_COMPLETED

我应该推断我不能做这样的事情。

这是真的如此,或者有一种方法可以在我的应用程序启动时在sd上启动广播。

如果不可能,我想知道它的用途 of 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 个答案:

答案 0 :(得分:2)

首先,您必须拆分意图过滤器 像这样:

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

每个过滤器应该只有一个操作。 第二个问题:ACOT_EXTERNAL_APPLICATIONS_AVAILABLE总是在BOOT_COMPLETED之后的某个时间发生(设备首先完成启动,然后读卡)。那为什么两个行动呢?