我在写媒体文件共享应用程序。意图过滤器活动和正确显示通知
现在被分成两个部分:
<application>
<activity android:name="FileUploader"
android:label="..."
>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<data android:mimeType="*/*"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<service android:name=".FileUploaderService" />
</application>
FileUploader是应该从其他活动(例如廊或照相机。)推出的活性。 FileUploaderService是一个服务,它实际上传文件到HTTP服务器。它执行多个HTTP请求。
现在有可能用户在上传过程中按Home按钮并返回到主屏幕。 在这种情况下,我想通知当前上传阶段的详细信息,当用户点击时会将用户返回到活动状态。
我creatung这样的:
int icon = R.drawable.icon;
CharSequence tickerText = "Uploading File";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
Context context = getApplicationContext();
CharSequence contentTitle = "Uploading File";
CharSequence contentText = "Upload in progress. Stage #" + i;
Intent notificationIntent = new Intent(this, FileUploader.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.setLatestEventInfo(context, contentTitle, contentText,
contentIntent);
mNM.notify(R.layout.main, notification);
的问题是,当我按在上传过程中home键 - 这是从画廊变得推出FileUploader活动实例“停止”,当我点击通知 - 第二FileUploader活动实例已启动。
那么有什么方法在点击通知而不是启动新通知时“返回”第一个活动?
我尝试以下方法,但非他们在这里工作:
调用完成()在FileUploader.onStop()方法 - 从纵向切换到横向当活动被关闭。
设置android:launchMode =“singleTask”用于AndroidManifest.xml中的FileUploader活动 - 此后我的应用程序开始出现在Recent Applications列表中,这是不可接受的,因为它允许从那里启动FileUploader活动,正如我所提到的在它上面只能通过从Gallery/Camera发送android.intent.action.SEND意图来启动。
用作用于发射第一个实例相同的目的 - 创造还是第二个实例和下面的警告是在日志:
04-12 17:01:17.041:警告/ ActivityManager(1289):startActivity从所谓非活动上下文;迫使Intent.FLAG_ACTIVITY_NEW_TASK为:意向{ACT = android.intent.action.SEND典型值=图像/ JPEG CMP = .FileUploader bnds = [0628] [480723](具有额外)}
我还试图改变行:
Context context = getApplicationContext();
与
Context context = this; // FileUploadServiceContext
但是,这并没有帮助。
嗯。我想,也许我发动错误的活动。可能我应该为我的FileUploader启动“父”活动。 例如:如果我从Gallery启动FileUploader,然后点击Home,然后再次从主屏幕启动Gallery - 我将返回到我的Activity。所以我想知道,也许我需要从通知中启动Gallery/Camera。但有2个问题:
如何确定我的活动的父母究竟是什么?
如果系统关闭了父母,该怎么办?
我明白了。但在这种情况下,如何: 1.当我用主页按钮退出时终止第一个Activity实例,但在布局更改时不会终止(例如)? 2.阻止我的活动显示在最近的应用程序列表中? – Forsaken 2011-04-12 13:53:35