在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中打开电报频道的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Telethon 获取电报私人频道 ID

如何将电报机器人添加到我不是管理员的公共频道?

电报机器人可以读取频道消息吗

sh 获取电报频道ID

电报上的 inlineKeyboard 用于发送到频道

关于电报机器人的多个问题