2016-05-17 2 views
2

Я хочу открыть страницу чата конкретного контакта с телеграммой, например, @userTest по намерению android.как открыть страницу чата конкретной телеграммы с контактом по назначению

это фрагмент открытой телеграммы намеренно:

  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

ok. решена. спасибо :) – saeid

+2

@saeid Как вы ее решили? пожалуйста, поделитесь – Apsaliya

ответ

0

Как это работает:

  • Он строит список браузеров игнорировать их, если установлена ​​телеграмма клиента.

  • Если есть один и только один клиент (goodresolvers == 1), то он открывается.

  • Если нет хороших клиентов (goodresolvers == 0), он возвращается к обработчику намерений по умолчанию.

  • Вы также можете улучшить этот код, если вы реализуете диалог с пользовательским выбором, который разрешает выбирать «хороших» клиентов, если у пользователя установлено несколько клиентов Telegram.

    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");

Смежные вопросы