gpt4 book ai didi

Android:从通知启动外部应用程序

转载 作者:搜寻专家 更新时间:2023-11-01 08:00:10 29 4
gpt4 key购买 nike

我正在尝试创建一个通知,当点击时将打开一个外部应用程序。我看过 creating notifications 的文档和 sending the user to another app .但我似乎无法弄清楚如何将两者结合起来。问题是从通知启动应用程序的建议方法是创建 pending intent,如下所示:

Intent intent = new Intent(this, MyActivity.class);
TaskStackBuilder stackBuidler = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MyActivity.class);
stackBuilder.addNextIntent(intent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

但要启动外部应用,您必须像这样创建一个隐式 Intent :

String uri = ...
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

据我所知,没有办法用这种 Intent 创建 TaskStackBuilder,因为 addParentStack() 只会接受一个 Activity,一个 Class,或 ComponentName

我想这个问题可以归结为...是否有可能创建一个既未决又隐含的 Intent ?

我现在能想到的唯一解决方法是在我的应用程序中创建一个 Activity,它只启动外部应用程序。

我确实尝试从 URI 创建 Intent ,然后执行以下操作,但是当您单击通知时没有任何反应:

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

最佳答案

好吧,很久以后,我想我有适合您的解决方案。对于正在寻找从您自己的自定义通知启动外部应用程序的答案的所有其他人。在这里:

public void createMyNotification(String titl, String titlcont, String conti){
Context context = getApplicationContext();
PackageManager pm = context.getPackageManager();
Intent LaunchIntent = null;
String apppack = "com.mycompany.appack.apname.app";
String name = "";
try {
if (pm != null) {
ApplicationInfo app = context.getPackageManager().getApplicationInfo(apppack, 0);
name = (String) pm.getApplicationLabel(app);
LaunchIntent = pm.getLaunchIntentForPackage(apppack);
}
Toast.makeText(context,"Found it:" + name,Toast.LENGTH_SHORT).show();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}

Intent intent = LaunchIntent; // new Intent();
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
Notification noti = new Notification.Builder(this)
.setTicker(titl)
.setContentTitle(titlcont)
.setContentText(conti)
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pIntent).getNotification();
noti.flags = Notification.FLAG_AUTO_CANCEL;
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, noti);
}

这不会使用额外的 Activity 来启动外部应用。

关于Android:从通知启动外部应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22313959/

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