2016-05-17 76 views
2

我想打開特定電報聯繫人的聊天頁面,例如@userTest android intent。打算如何打開特定電報聯繫人的意向

這是意圖通電的片段:

  Intent myIntent = new Intent(Intent.ACTION_SEND); 
      myIntent.setType("text/plain"); 
      myIntent.setPackage("org.telegram.messenger"); 
      activity.startActivity(myIntent); 

但現在怎麼打開聊天網頁的特定用戶的?

+1

也許嘗試打開相關頁面telegram.me,例如https://telegram.me/userTest –

+1

好的。解決了。謝謝:) – saeid

+2

@saeid你是如何解決它的?請分享 – Apsaliya

回答

0

工作原理:

  • 它構建的瀏覽器的列表忽略他們,如果安裝了客戶端的電報。

  • 如果有且只有一個客戶端(goodresolvers == 1),那麼它會被打開。

  • 如果沒有好的客戶端(goodresolvers == 0)它會回退到默認的意圖處理程序。

  • 如果您實現了一個自定義選擇器的對話框,只有當用戶安裝了多個電報客戶端時才允許選擇「好」客戶端,您可以進一步改進此代碼。

    public static void openTelegram(Activity activity, String userName) { 
        Intent general = new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.com/" + userName)); 
        HashSet<String> generalResolvers = new HashSet<>(); 
        List<ResolveInfo> generalResolveInfo = activity.getPackageManager().queryIntentActivities(general, 0); 
        for (ResolveInfo info : generalResolveInfo) { 
         if (info.activityInfo.packageName != null) { 
          generalResolvers.add(info.activityInfo.packageName); 
         } 
        } 
    
        Intent telegram = new Intent(Intent.ACTION_VIEW, Uri.parse("https://t.me/" + userName)); 
        int goodResolver = 0; 
        // gets the list of intents that can be loaded. 
        List<ResolveInfo> resInfo = activity.getPackageManager().queryIntentActivities(telegram, 0); 
        if (!resInfo.isEmpty()) { 
         for (ResolveInfo info : resInfo) { 
          if (info.activityInfo.packageName != null && !generalResolvers.contains(info.activityInfo.packageName)) { 
           goodResolver++; 
           telegram.setPackage(info.activityInfo.packageName); 
          } 
         } 
        } 
        //TODO: if there are several good resolvers create custom chooser 
        if (goodResolver != 1) { 
         telegram.setPackage(null); 
        } 
        if (telegram.resolveActivity(activity.getPackageManager()) != null) { 
         activity.startActivity(telegram); 
        } 
    } 
    

用法:openTelegram(activity, "userTest");

相關問題