我有三种类别的警报,其中每个类别都将导航到各自指定的屏幕。当我在广播时显示警报触发时显示本地通知。这里我保持一个额外的意图到哪个屏幕应该导航。当我调用一个活动来导航待定意图时,onNewIntent方法正在处理屏幕导航。
private void showNotification(Context context) {
...
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("fragmentname", "firstCategory");
...
}
//主要活动onNewIntent方法
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String screenName = intent.getStringExtra("fragmentname");
if (screenName != null && screenName.equalsIgnoreCase("firstCategory")) {
moveToFirstCategoryScreen();
}
}
导航目前工作正常,直到应用程序位于前台或最近打开的应用程序中。但是,如果我从最近打开的应用程序中删除,则当通知到达时,它不会导航到特定屏幕。
在调试时,我发现了这些活动' onNewIntent方法没有调用。
当应用在后台时,我该如何处理屏幕导航。
非常感谢您的帮助!
提前致谢!
编辑06/04/2018
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getName();
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = MainActivity.this;
onNewIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String screenName = intent.getStringExtra("fragmentname");
if (screenName != null && screenName.equalsIgnoreCase("firstCategory")) {
moveToFirstCategoryScreen();
}
}
private void moveToFirstCategoryScreen() {
Intent intent = new Intent(this, FirstCategory.class);
startActivityForResult(intent);
}
}
在我的闹钟接收器中:
public class AlarmReceiver extends BroadcastReceiver {
public static final String TAG = AlarmReceiver.class.getName();
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
//Acquire the lock
wl.acquire();
showNotification(context);
}
private void showNotification(Context context) {
...
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("fragmentname", "firstCategory");
...
}
}
清单:
...
<activity
android:name=".activity.MainActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait"
/>
...
答案 0 :(得分:1)
将以下代码写在MainActivity类的onCreate()方法中。
onNewIntent(getIntent())