Пользовательская навигация по URI из уведомлений и из браузера
Я работаю с пользовательскими URI, чтобы показать соответствующий контент в приложении для Android.
Навигационный поток из Уведомления:
onMessage () метод GCMBaseIntentService У меня есть вызов метода generateNotification().
private void generateNotification(Context context, String message,
String uri) {
int icon = R.drawable.icon;
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
String title = context.getString(R.string.app_name);
Uri deepLinkUri = Uri.parse(uri);
String scheme = deepLinkUri.getScheme();
Intent notificationIntent = null ;
String appPackageName = getApplicationContext().getPackageName();
if(scheme.equals("market")){
try {
notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" +appPackageName));
} catch (android.content.ActivityNotFoundException anfe) {
//redirect to browser url to download/update
}
}else{
notificationIntent = new Intent(context,
com.play.android.SplashScreen.class);
}
notificationIntent.setData(deepLinkUri);
/* notificationIntent.setData(Uri.parse(uri)); */
// set intent so it does not start a new activity
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent intent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);
notification.setLatestEventInfo(context, title, message, intent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
long notify_ID = System.currentTimeMillis();
notificationManager.notify((int) notify_ID, notification);
}
Если у меня есть 2 уведомления (разный контент страницы, но одинаковые URI с разными идентификаторами). Если я нажму на уведомление 1, показываю точную страницу с данными и оставлю ее как есть, и снова нажму на уведомление 2, показывающее соответствующий контент.
Теперь я снова нажимаю, перехожу на домашнюю страницу, второй назад нажимаю закрыть приложение.
Ход навигации из браузера:
С мобильного сайта нажатие кнопки дает тем же URI его навигацию к соответствующей странице.
Например, 2 разные кнопки - 2 разных URI - 2 разных загрузки контента страницы в качестве потока УВЕДОМЛЕНИЙ.
Но когда нажимаешь обратно, не начинай Активность как свежую. Так что обратный пресс-поток выполняется как
first back press --- >URI2 page content close - home page show
second back press----> home page close - URI 1 page content show
third back press -----> URI 1 page content close - home page show
fourth back press ----> App closing.
В файле манифеста действие объявлено следующим образом:
<activity
android:name="com.play.android.SongsTabs"
android:configChanges="orientation|keyboardHidden"
android:exported="true"
android:screenOrientation="portrait" >
<intent-filter>
<data
android:pathPrefix="music/*"
android:scheme="myscheme" />
<data
android:pathPrefix="playlist/*"
android:scheme="myscheme" />
<data android:scheme="myscheme" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.ALL_APPS" />
</intent-filter>
</activity>
С момента уведомления активность начинается как новая, так что обратное нажатие работает нормально. Но не в потоке браузера. Что я пропустил? Что делать надо? Если вам нужно больше деталей, пожалуйста, дайте мне знать.