【问题标题】:How to start activity from broadcast from Download manager?如何从下载管理器的广播开始活动?
【发布时间】:2015-06-22 11:48:31
【问题描述】:

如果可能,我想恢复,否则当用户单击来自下载管理器的通知时,从广播接收器开始新活动。

清单

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
    <uses-permission android:name="com.sec.android.provider.badge.permission.READ" />
    <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />
    <uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" />
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

... 

     <receiver
                android:name=".rest.receiver.DownloadReceiver"
                android:enabled="true"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
                    <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
                </intent-filter>
            </receiver>

广播接收器

private final static String TAG = "DownloadManagerStatus";


    @Override
    public void onReceive(Context context, Intent intent){
        String action = intent.getAction();
        Log.i(TAG, "onReceive " + action);
        if(action.equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
        context.startService(new Intent(context, DownloadCheckerService.class));
        else if(action.equals(DownloadManager.ACTION_NOTIFICATION_CLICKED)){
            Intent i = new Intent(context,MainActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            context.startActivity(i);
        }
    }

如果我点击通知,当我的应用程序处于前台或后台时 - 会恢复正确的活动。

如果我单击通知,当我的应用程序终止或未启动时(例如重新启动后)- 广播接收器不会收到任何意图。

【问题讨论】:

  • 你好@Yarh你找到你的解决方案了吗?因为我在这里面临同样的问题
  • @KishanSoni 抱歉,没有。

标签: android android-intent android-broadcast android-download-manager


【解决方案1】:

我认为,问题在于,当您终止进程时,您也会杀死广播接收器。您必须为广播接收器创建一个单独的进程。 Should I use android: process =":remote" in my receiver?

【讨论】:

  • 我将此行添加到我的接收者声明中,但 id 没有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多