在SD卡上安装应用程序时未收到MEDIA_MOUNTED广播

时间:2012-10-04 10:50:03

标签: android broadcastreceiver

如果SD卡上安装了应用程序,如何在启动时启动应用程序?如果i应用程序安装在内部存储器上,然后使用BOOT_COMPLETED已完成的广播,我们可以达到我们的要求,但这个BOOT_COMPLETED意图是在安装媒体之前进行广播,因此我们无法使用此广播。

我到目前为止尝试的是,我使用的另一个意图是MEDIA_MOUNTED,但不知道为什么没有收到广播。

这是我的代码
AndroidManifest.xml

<receiver
            android:name=".ui.Receiver"
            android:enabled="true" >
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_MOUNTED" />
                <data android:scheme="file" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE" />
                <action android:name="android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_REPLACED" />

                <data android:scheme="package" />
                <data android:path="org.sipchat.sipua" />
            </intent-filter>
        </receiver>

Receiver.java

public void onReceive(Context context, Intent intent) {
        String intentAction = intent.getAction();
        if (intentAction.equals(Intent.ACTION_BOOT_COMPLETED)) {
            Toast.makeText(context, "BOOT Completed", Toast.LENGTH_LONG).show();
            on_vpn(false);
            engine(context).register();
        } else if (intentAction.equals(Intent.ACTION_MEDIA_MOUNTED)) {
            Toast.makeText(context, "Media is Mounted", Toast.LENGTH_LONG)
                    .show();
            engine(context).register();
        } else if (intentAction.equals(ConnectivityManager.CONNECTIVITY_ACTION)
                || intentAction.equals(ACTION_EXTERNAL_APPLICATIONS_AVAILABLE)
                || intentAction
                        .equals(ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE)
                || intentAction.equals(Intent.ACTION_PACKAGE_REPLACED)) {
            engine(context).register();}}

任何帮助和建议将不胜感激 感谢

1 个答案:

答案 0 :(得分:0)

应用程序从设备启动时开始,将在3.0以下的Android版本中运行。有关更多信息,请参阅此帖Link 01