gpt4 book ai didi

java - 从 Android 应用程序启动包含消息和收件人的 Telegram 应用程序

转载 作者:行者123 更新时间:2023-12-01 19:30:22 25 4
gpt4 key购买 nike

我需要从我自己的 Android 应用程序中打开 Telegram,预先填充消息和收件人(并且不必在 Chrome 或 Telegram 之间进行选择),我用这段代码实现了第一个:

        final String appName = "org.telegram.messenger";
Intent tIntent = new Intent(Intent.ACTION_SEND);
tIntent.setType("text/plain");
tIntent.setPackage(appName);
tIntent.putExtra(Intent.EXTRA_TEXT, msg);
mUIActivity.startActivity(tIntent);

第二个代码如下:

        Intent tIntent = new Intent(Intent.ACTION_VIEW);
tIntent.setData(Uri.parse("http://telegram.me/USERID"));
startActivity(tIntent);

(为了简单起见,我删除了所有检查,例如 isTelegramInstalled)

我尝试混合使用这两种方法添加一些额外的 Intent ,例如 msg,我们得到的代码将一键打开 Telegram,其中包含预先填充的消息和收件人:

        Intent telegramIntent = new Intent(Intent.ACTION_SEND);
tIntent.setDataAndType(Uri.parse("http://telegram.me/username"), "text/plain");
final String appName = "org.telegram.messenger";
tIntent.setPackage(appName);
tIntent.putExtra(Intent.EXTRA_TEXT, "hello");
startActivity(tIntent);

...aa但它不起作用!

android.content.ActivityNotFoundException:找不到处理 Intent 的 Activity { act=android.intent.action.SEND dat=http://telegram.me/... flg=0x1 pkg=org.telegram. Messenger Clip={null T:hello} (有额外内容) }

知道如何实现这一目标吗?

最佳答案

请尝试以下功能来打开 Telegram

public static void openTelegram(Activity activity, String userName) {
Intent general = new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.com/" + userName));
HashSet<String> generalResolvers = new HashSet<>();
List<ResolveInfo> generalResolveInfo = activity.getPackageManager().queryIntentActivities(general, 0);
for (ResolveInfo info : generalResolveInfo) {
if (info.activityInfo.packageName != null) {
generalResolvers.add(info.activityInfo.packageName);
}
}

Intent telegram = new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/" + userName));
int goodResolver = 0;
// gets the list of intents that can be loaded.
List<ResolveInfo> resInfo = activity.getPackageManager().queryIntentActivities(telegram, 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
if (info.activityInfo.packageName != null && !generalResolvers.contains(info.activityInfo.packageName)) {
goodResolver++;
telegram.setPackage(info.activityInfo.packageName);
}
}
}
//TODO: if there are several good resolvers create custom chooser
if (goodResolver != 1) {
telegram.setPackage(null);
}
if (telegram.resolveActivity(activity.getPackageManager()) != null) {
activity.startActivity(telegram);
}
}

希望对您有帮助!

谢谢。

关于java - 从 Android 应用程序启动包含消息和收件人的 Telegram 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59926208/

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