在 android 中打开电报频道

Open telegram channel in android

在我的应用程序中想要使用 Intent 打开特定的电报频道或电报组。我在 SF 中搜索但找不到 anything.i 尝试实施但我只能打开用户可以选择的所有 Messenger 应用程序,但不能打开电报或特定电报组或频道。如果在 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"));

打开 Telegram 频道或用户的意图:

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

首先检查是否安装了电报客户端(电报信使或电报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!!
}

Java @Saurabh Padwekar 的回答版本!

  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;
    }

@Saurabh Padwekar 的回答很好,但我想告诉你你可能 need add queries for Android SDK 30+ 是这样的:

<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="tg" />
    </intent>
</queries>

这将是一个更完整的答案:

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) {
    }