在android中打开电报频道
Posted
技术标签:
【中文标题】在android中打开电报频道【英文标题】:Open telegram channel in android 【发布时间】:2016-04-14 00:36:39 【问题描述】:在我的应用程序中想使用Intent
打开特定的电报频道或电报组。我在 SF 中搜索,但找不到任何东西。我尝试实施,但我只能打开用户可以选择的所有信使应用程序,但不能打开电报或特定电报组或频道。如果在 sf 上找到 this 但这不是我的问题的答案。
Intent myIntent = new Intent(Intent.ACTION_SEND);
myIntent.setType("text/plain");
myIntent.setPackage(appName);
myIntent.putExtra(Intent.EXTRA_TEXT, msg);//
mUIActivity.startActivity(Intent.createChooser(myIntent, "Share with"));
【问题讨论】:
【参考方案1】:打开 Telegram 频道或用户的意图:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tg://resolve?domain=partsilicon"));
startActivity(intent);
【讨论】:
我们也可以在意图中使用http://www.telegram.me/groupname
,当用户点击按钮时可以选择电报
我们可以在这个链接上添加消息或文本吗?
为上述解决方案添加 try catch。否则,如果未安装电报应用程序,应用程序将崩溃【参考方案2】:
首先检查是否安装了任何电报客户端(电报信使或电报x)。如果没有在浏览器中打开它。
fun telegramIntent(context: Context): Intent
var intent: Intent? = null
try
try
context.packageManager.getPackageInfo("org.telegram.messenger", 0)//Check for Telegram Messenger App
catch (e : Exception)
context.packageManager.getPackageInfo("org.thunderdog.challegram", 0)//Check for Telegram X App
intent = Intent(Intent.ACTION_VIEW, Uri.parse("tg://resolve?domain=$TELEGRAM_PAGE_ID"))
catch (e : Exception) //App not found open in browser
intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.telegram.me/$TELEGRAM_PAGE_ID"))
return intent!!
【讨论】:
$TELEGRAM_PAGE_ID"
它可能是电话号码或应该是什么??
$TELEGRAM_PAGE_ID 只不过是我们试图打开的组 ID/频道 ID。要找到频道 ID,请打开任何电报频道,单击频道信息。您会找到一个链接,例如 https://t.me/easyoffers
$TELEGRAM_PAGE_ID 将是 easyoffers
如果你想打开一个对话,而不是一个组,$TELEGRAM_PAGE_ID 将是电话号码??【参考方案3】:
@Saurabh Padwekar 的答案的 Java 版本!
Intent getTelegramInt(Context context)
Intent intent;
try
try // check for telegram app
context.getPackageManager().getPackageInfo("org.telegram.messenger", 0);
catch (PackageManager.NameNotFoundException e)
// check for telegram X app
context.getPackageManager().getPackageInfo("org.thunderdog.challegram", 0);
// set app Uri
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tg://resolve?domain=$TELEGRAM_PAGE_ID"));
catch (PackageManager.NameNotFoundException e)
// set browser URI
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.telegram.me/$TELEGRAM_PAGE_ID"));
return intent;
【讨论】:
【参考方案4】:回答@Saurabh Padwekar 很好,但我想告诉你need add queries for android SDK 30+ 可能是这样的:
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="tg" />
</intent>
</queries>
【讨论】:
【参考方案5】:这将是一个更完整的答案:
try
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(telegramLink));
PackageManager pm = getPackageManager();
if (intent.resolveActivity(pm) != null)
startActivity(intent);
else
Toast.makeText(context, "Error message", Toast.LENGTH_LONG).show();
catch (Exception ignored)
【讨论】:
以上是关于在android中打开电报频道的主要内容,如果未能解决你的问题,请参考以下文章