【问题标题】:Open telegram channel in android在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"));

【问题讨论】:

    标签: android telegram


    【解决方案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) {
            }
        

        【讨论】:

          猜你喜欢
          • 2022-10-04
          • 1970-01-01
          • 2023-02-22
          • 2016-05-30
          • 2017-03-04
          • 1970-01-01
          • 2022-08-22
          • 2013-05-06
          • 2017-04-27
          相关资源
          最近更新 更多