单击android中的通知

时间:2014-06-18 12:06:13

标签: android android-intent android-activity notifications android-viewpager

我有一个运行服务的应用程序。该服务根据时间发送通知(例如,在11小时发送通知,在11:30时,它发送另一个通知)

当用户点击通知时,我必须在应用程序中显示弹出窗口(Android中的Dialog类)。

我的解决方案是:当用户点击通知然后显示对话框时,我启动应用程序的MainActivity。

问题:Click将用户带到应用程序的第一个屏幕。如果用户在点击通知时在其他屏幕上(我在我的应用程序中使用了一个视图寻呼机),我希望对话框显示在当前用户所在的屏幕上而不是第一个屏幕上

如何解决此问题?谢谢你的解决方案。

2 个答案:

答案 0 :(得分:0)

一种方法是在Application类上创建对当前Activity的静态引用(关于如何创建应用程序类的示例:http://www.intertech.com/Blog/androids-application-class/

拥有Application类,您应该创建一个静态上下文,如:

public static FragmentActivity currentActivity;

现在,您应该在每个Activity.onCreate上填充此实例。

之后,您可以使用此静态上下文来创建对话框。

此致

答案 1 :(得分:0)

对于要在用户所在的同一屏幕上显示的对话框,最好为您介绍一个Theme.Dialog主题活动,并将其添加到您的Notification构建器中。喜欢:

    // This sets the pending intent that should be fired when the user clicks the
    // notification. Clicking the notification launches a new activity.
         Intent intent = new Intent(this, YourDialogActivity.class);
        //set flags according to your implementation
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_HISTORY);
//       startActivity(intent);

            // Because clicking the notification launches a new ("special") activity, 
            // there's no need to create an artificial back stack.
            PendingIntent resultPendingIntent =
                     PendingIntent.getActivity(
                     this,
                     0,
                     intent,
                   PendingIntent.FLAG_ONE_SHOT //also check the flags here
            );
            mBuilder.setContentIntent(resultPendingIntent);

        // Gets an instance of the NotificationManager service
        NotificationManager mNotifyMgr = (NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE);
        // Builds the notification and issues it.
        mNotifyMgr.notify(integerHere, mBuilder.build());  

在您的清单中,使用主题对话框添加您的活动:

  <activity
            android:name="com.package.YourDialogActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Dialog" />  

有关详细实施,请参阅:Define the Notification's Action

这样,您就不会调用应用程序的MainActivity,DialogActivity将只打开应用程序并显示最小化应用程序时最后打开的活动对话框。