Nasza aplikacja zawiera różne powiadomienia, które mogą otwierać różne czynności. Dlatego stworzyliśmy schemat URI, aby to zrobić. Powiadomienia są odbierane i otwierane prawidłowe działania. Tworzę stos dla prawidłowej nawigacji z następującego kodu:Android 4.1.1 Tworzenie stosu dla aktywności po otrzymaniu powiadomienia o identyfikatorze URI
Intent intent = new Intent(Intent.ACTION_DEFAULT, Uri.parse(uri));
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addNextIntentWithParentStack(intent);
PendingIntent contentIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationManager mNotifM = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder mBuilder = new Notification.Builder(context);
mNotifM.notify(NotificationId.getID(), mBuilder.setStyle(new Notification.BigTextStyle(mBuilder)
.bigText(bigText)
.setBigContentTitle(title)
.setSummaryText(summaryText))
.setContentTitle(title)
.setSmallIcon(R.drawable.udechile_launcher)
.setContentText(summaryText)
.setAutoCancel(true)
.setContentIntent(contentIntent)
.setTicker(bigText)
.build());
Problem polega na tym, że w Androidzie 4.1.1 tego kodu, aby odtworzyć cały stos nie działa prawidłowo. Jedynym sposobem, zrobiłem to praca referecing klasę zamiast URI podczas tworzenia zamiar:
intent = new Intent(context, MatchDetail.class);
Problem z tym jest to, że będę musiał zrobić przełącznik indywidualnie dla każdego uri, aby móc tworzyć zamiar z każdą klasą. To przede wszystkim pokonuje cel URI. Również jeśli w przyszłości muszę dodać nowy Push Target, to nie tylko dodawanie URI w AndroidManifest.xml Muszę dodać nową skrzynkę w przełączniku Push Notification Receiver.
Czy ktoś wie, jak zrobić to w Androidzie 4.1.1 z identyfikatorami URI?
Extract oczywistego:
<activity
android:name=".controller.MatchDetail"
android:label="@string/title_activity_match_detail"
android:parentActivityName=".controller.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".controller.MainActivity" />
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="scheme" android:host="base" android:path="/name" />
</intent-filter>
</activity>
Co powstrzymuje cię przed użyciem kodu na poprzednich API? Czy mówisz, że "nowe intencje (Intent.ACTION_DEFAULT, Uri.parse (uri));" nie działają lub masz problem z resztą kodu? – ianhanniballake
Uri działało, ale kiedy wróciłem, aplikacja zamknęła się 4.1.1 i działa z Androidem 4.2.2. Ten sam kod: – Franklin
Zakładając, że korzystasz z wersji SupportStackBuilder (http://developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html) w wersji Support Library, nie ma w niej nic odmiennego od systemu Android 3.0+ budowany jest stos rodzica, który powodowałby, że 4.1.1 działa inaczej niż w wersji 4.2.2. Czy możesz dołączyć wpis manifestu działania dla jednej z działań, która nie działa? – ianhanniballake