[英]How to Handle Pending Intent on Notification Progress bar?
在我的应用程序中,我正在将图像上传到服务器,那里有一个通知进度条以显示上传进度。当用户单击通知时,将显示一个弹出窗口以取消或继续上传。所有这些都工作正常。当我单击后退按钮,当我处于上一个活动时,如果我单击通知,则不会显示弹出窗口,而是仅加载文件上载的活动。如何解决此问题??当用户单击通知时,未决的Intent将被传递,并且在onNewIntent方法中我正在调用弹出窗口方法。当我进行文件上传活动时,这工作正常。我不知道实际的问题是什么。我认为待处理的意图是与我的另一个意图打交道onCreate方法,任何人都可以帮忙吗?
等待通知进度
public void ProgressBarNotification() {
mBuilder = new NotificationCompat.Builder(ImageUploadActivity.this);
mBuilder.setContentTitle("Upload")
.setContentText("Upload in progress")
.setSmallIcon(R.drawable.ic_launcher);
mBuilder.setProgress(100, 0, false);
mBuilder.setAutoCancel(true);
Intent myIntent = new Intent(this, ImageUploadActivity.class); //Pending Intent
myIntent.putExtra("first_state",3);
PendingIntent pendingIntent = PendingIntent.getActivity(ImageUploadActivity.this, 1, myIntent, PendingIntent. FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pendingIntent);
mNotifyManager.notify(MY_NOTIFICATION_ID, mBuilder.build());
}
onNewIntent方法
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//new Intent(this, ImageUploadActivity.class);
Bundle extras = intent.getExtras();
state = extras.getInt("first_state");
if(state==3)
{
initiatePopupWindow();
}}
InitiatePopupwindow方法
public void initiatePopupWindow() {
try {
LayoutInflater inflater = (LayoutInflater) ImageUploadActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.popupmenu,
(ViewGroup) findViewById(R.id.popup_element));
pwindo = new PopupWindow(layout, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, true);
pwindo.showAtLocation(layout, Gravity.CENTER, 0, 0);
pwindo.setFocusable(true);
pwindo.setOutsideTouchable(true);
Button btnStopUpload = (Button) layout.findViewById(R.id.btn_upload);
btnStopUpload.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mNotifyManager.cancel(MY_NOTIFICATION_ID);
// mTask.cancel(true);
Log.e(TAG, "Notification Cancelled ");
// mTask.cancel(true);
Toast.makeText(getApplicationContext(),
"Upload Cancelled", Toast.LENGTH_SHORT).show();
ImageUploadActivity.this.finish();
}
});
Button btnCancelPopup = (Button) layout.findViewById(R.id.btn_cancel);
btnCancelPopup.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
pwindo.dismiss();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
private View.OnClickListener cancel_button_click_listener = new View.OnClickListener() {
public void onClick(View v) {
pwindo.dismiss();
}
};
从ImageUploadActivity
按下时,它已从活动堆栈中删除,因此当用户单击通知时,pendingIntent将创建活动的新实例。 OnNewIntent()
总是被调用为singleTop/Task
活动,除了第一次创建活动时。 当时调用了onCreate
。
在ImageUploadActivity
onCreate()
,您可以调用onNewIntent(getIntent())
,在onNewIntent()
检查extras
是否不为null并包含first_state
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.