在android中打开电报频道

MBe*_*mam 13 android telegram

在我的应用程序中想要用来Intent打开特定的电报频道或电报组.我在SF搜索,但我找不到任何东西.我尝试实现,但我只能打开用户可以选择但不是电报或特定电报组或频道的所有信使应用程序.如果在sf上找到这个,但它不能回答我的问题.

    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"));
Run Code Online (Sandbox Code Playgroud)

Sad*_*ari 28

意图打开电报频道或用户:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tg://resolve?domain=partsilicon"));
            startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

  • 我们也可以在意图中使用`http:// www.telegram.me/groupname`,当用户点击按钮时可以选择电报 (5认同)
  • 为上述解决方案添加 try catch。否则,如果未安装电报应用程序,应用程序将崩溃 (3认同)

Sau*_*kar 6

首先检查是否安装了任何电报客户端(电报信使或电报 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!!
}
Run Code Online (Sandbox Code Playgroud)


小智 5

回答@Saurabh Padwekar 很好,但我想告诉您,您可能需要为 Android SDK 30+ 添加查询,如下所示:

<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="tg" />
    </intent>
</queries>
Run Code Online (Sandbox Code Playgroud)