Android 如何处理通知进度条上挂起的意图?
在我的应用程序中,我正在将图像上载到服务器,其中有一个通知进度栏,用于显示上载进度。当用户单击通知时,将显示一个弹出窗口以取消或继续上载。所有这些都正常工作。当我单击“上一步”按钮时,以及当我处于上一活动时,如果我单击通知,弹出窗口将不会显示,而只是加载文件上载活动。我如何解决此问题??。当用户单击通知时,将传递一个挂起的意图,并且在onNewIntent方法中,我调用弹出窗口方法。当我在文件上载活动中时,此方法工作正常。我不知道是什么是实际问题。我认为挂起的意图是处理我onCreate方法中的另一个意图,有人能帮忙吗 关于通知进度的未决意向Android 如何处理通知进度条上挂起的意图?,android,android-intent,android-pendingintent,android-popupwindow,Android,Android Intent,Android Pendingintent,Android Popupwindow,在我的应用程序中,我正在将图像上载到服务器,其中有一个通知进度栏,用于显示上载进度。当用户单击通知时,将显示一个弹出窗口以取消或继续上载。所有这些都正常工作。当我单击“上一步”按钮时,以及当我处于上一活动时,如果我单击通知,弹出窗口将不会显示,而只是加载文件上载活动。我如何解决此问题??。当用户单击通知时,将传递一个挂起的意图,并且在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());
}
内隐法
@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();
}}
初始化窗口方法
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
按back键时,它已从activity Backback中删除,因此当用户单击通知时,PendingEvent将创建一个新的activity实例。OnneWinEvent()
始终会被调用singleTop/Task
活动,但首次创建activity时除外。此时将调用onCreate
在
ImageUploadActivity
的onCreate()
中,您可以调用onNewIntent(getIntent())
,在onNewIntent()
中,检查extras
是否不为空且包含第一状态
是您的活动单端
?是的。android:launchMode=“singleTop”好的,我调用了onNewIntent(getIntent());在我的onCreate方法中。但仍然是initiatePopupWindow();方法未执行,但newIntent上的Toast正在工作(有什么想法吗?)能否检查my initiatePopupWindow();方法您正在调用pwindo.showas下拉列表initiatePopupWindow
?您在哪里调用pwindo
上的show方法?这是代码pwindo.showAtLocation(布局,重心,0,0);州是3?您的try-catch块中是否存在任何异常?