gpt4 book ai didi

未调用 Android OnNewIntent

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:15 24 4
gpt4 key购买 nike

我看到了几种方法,我尝试了所有方法,但无法使其工作。我不知道为什么它如此复杂,在文档中看起来很简单!我想通过通知触发 OnNewIntent(用户在通知栏中单击它)。

目前我已经将我的 Activity 设置为 singleTop

<activity
android:name="-.-.-.MainMenuActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
</activity>

这是我创建通知的代码:

public void showNotification(String text, String componentId){
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.logo)
.setContentTitle("Title")
.setAutoCancel(true)
.setContentText(text);

// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, MainMenuActivity.class);
if(!componentId.equalsIgnoreCase("")){
resultIntent.putExtra("componentId", componentId);
}
resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, 0);
mBuilder.setFullScreenIntent(resultPendingIntent, false);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify(0, mBuilder.build());
}

这是我的 MainMenuActivity 中的 OnNewIntent 方法:

@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
setIntent(intent);

...
}

我从来没有接到 OnNewIntent 电话。我不知道我做错了什么。我在整个应用程序中只使用了 2 个 Activity ,并且 MainMenuActivity 在 LoginActivity 之后,因此 MainMenuActivity 应该始终位于堆栈的顶部(我有更多 fragment ,我在 MainMenuActivity 中替换它们)。

任何帮助将不胜感激!谢谢你们。

最佳答案

好的,在发布我的问题后它很快就开始工作了。我认为我们代码的主要区别在于我将标志“PendingIntent.FLAG_UPDATE_CURRENT”传递给 PendingIntent 对象的创建/检索。这post帮我解决了这个问题。

Notification.Builder mBuilder =
new Notification.Builder(context)
.setSmallIcon(R.drawable.notifyicon)
.setContentTitle(title)
.setContentText(extras.getString("message"))
.setAutoCancel(true)
.setOnlyAlertOnce(false)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setVibrate(new long[] {0,500,250,500});

if(badgeCount > 1)
mBuilder.setNumber(badgeCount);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(context, SiteViewActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
resultIntent.putExtra(NOTIFY_INTENT_TYPE_KEY, alertType);

PendingIntent resultPendingIntent = PendingIntent.getActivity(context, alertType, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager notifyMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifyMgr.notify(alertType, mBuilder.build());

关于未调用 Android OnNewIntent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30708462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com