【发布时间】: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