Android 如何在不重写OnBackPressed()的情况下从从通知启动的活动导航到另一个活动?
我有3个活动假设MainActivity、FirstActivity、NotificationActivity,当用户单击我的应用程序活动C中的通知时,我希望用户能够在按下后退按钮时返回B,我希望在不覆盖OnBackPressed()的情况下实现这一点方法在进行一些研发时,我发现了一种使用清单指定父活动返回到另一个活动的方法,它从B->a和C->a工作,但我不知道如何让C->B工作。我将发布我正在处理的清单文件。如果需要,我会发布类文件Android 如何在不重写OnBackPressed()的情况下从从通知启动的活动导航到另一个活动?,android,android-activity,notifications,android-manifest,Android,Android Activity,Notifications,Android Manifest,我有3个活动假设MainActivity、FirstActivity、NotificationActivity,当用户单击我的应用程序活动C中的通知时,我希望用户能够在按下后退按钮时返回B,我希望在不覆盖OnBackPressed()的情况下实现这一点方法在进行一些研发时,我发现了一种使用清单指定父活动返回到另一个活动的方法,它从B->a和C->a工作,但我不知道如何让C->B工作。我将发布我正在处理的清单文件。如果需要,我会发布类文件 <?xml version="1.0" encodi
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.notificationmultipledemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".FirstActivity"
android:label="@string/title_activity_first"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
<activity android:name=".NotificationActivity"
android:label="@string/title_activity_notification"
android:parentActivityName=".FirstActivity">
<meta-data android:name="android.support.PARENT_ACTIVITY"
android:value=".FirstActivity" />
</activity>
</application>
在displayNotificationOne()中替换 与 如果您希望用户在按下“后退”按钮时从NotificationActivity导航到FirstActivity,您还可以根据清单从FirstActivity转到此处的MainActivity。如果不希望发生这种情况,请删除FirstActivity活动部分中的元数据和parentActivityName
public class MainActivity extends Activity
{
private NotificationManager myNotificationManager;
private int notificationIdOne = 111;
private int notificationIdTwo = 112;
private int numMessagesOne = 0;
private int numMessagesTwo = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button notOneBtn = (Button) findViewById(R.id.notificationOne);
notOneBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
displayNotificationOne();
}
});
Button notTwoBtn = (Button) findViewById(R.id.notificationTwo);
notTwoBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
displayNotificationTwo();
}
});
}
protected void displayNotificationOne() {
// Invoking the default notification service
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle("New Message with explicit intent");
mBuilder.setContentText("New message from Cheers received");
mBuilder.setTicker("Explicit: New Message Received!");
mBuilder.setSmallIcon(R.drawable.ic_launcher);
// Increase notification number every time a new notification arrives
mBuilder.setNumber(++numMessagesOne);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, NotificationActivity.class);
//resultIntent.putExtra("notificationId", notificationIdOne);
// when the user presses the notification, it is auto-removed
mBuilder.setAutoCancel(true);
//This ensures that navigating backward from the Activity leads out of the app to Home page
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent
stackBuilder.addParentStack(FirstActivity.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
// start the activity when the user clicks the notification text
mBuilder.setContentIntent(resultPendingIntent);
myNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Date now = new Date();
long uniqueId = now.getTime();//use date to generate an unique id to differentiate the notifications.
// pass the Notification object to the system
Calendar c = Calendar.getInstance();
SimpleDateFormat simpledateformat_notification = new SimpleDateFormat("HH:mm:ss");
String Notificationdate = simpledateformat_notification.format(c.getTime());
String[] Notification_time = Notificationdate.split(":");
//int Beacon_hour = Integer.parseInt(Notification_time[0]); //7
int Notification_minutes =Integer.parseInt(Notification_time[2]);
myNotificationManager.notify(Notification_minutes, mBuilder.build());
}
}
stackBuilder.addParentStack(FirstActivity.class);
stackBuilder.addParentStack(NotificationActivity.class);