2016-06-06 5 views
0

Я пытаюсь поделиться некоторыми данными только через facebook, twitter и g +, поэтому я создаю собственный список намерений, и я могу отправить какой-то текст, все работает нормально. Но я получил дисплей проблемы с твиттером см ниже enter image description hereСовместное использование данных с настраиваемым списком намерений отображает систему Android

Вы можете увидеть это Systeme Android и если я нажимаю на него, я получил это: enter image description here

Смотрите код:

В этом первая функция, которую я просто положил пакет я хотел бы использовать

private List<String> getShareApplication(){ 
    List<String> mList=new ArrayList<>(); 
    mList.add("com.facebook.katana"); 
    mList.add("com.google.android.apps.plus"); 
    mList.add("com.twitter.android"); 
    return mList; 
} 

И в этом, я использую список чуть выше, я смотрю в цикла, если пакет существует на моем телефоне, я создаю Intent targetedShare вызова с ACTION_SEND и поставить какой-нибудь текст внутри него, и, наконец, добавить его в список targetedShareIntents

private void Share(List<String> PackageName) { 
      List<Intent> targetedShareIntents = new ArrayList<>(); 
      Intent share = new Intent(android.content.Intent.ACTION_SEND); 
      share.setType("text/plain"); 
      List<ResolveInfo> resInfo = context.getPackageManager().queryIntentActivities(share, 0); 
      if (!resInfo.isEmpty()){ 
       for (ResolveInfo info : resInfo) { 
        Intent targetedShare = new Intent(android.content.Intent.ACTION_SEND); 
        if (PackageName.contains(info.activityInfo.packageName.toLowerCase())) { 
         targetedShare.setType("text/plain"); 
         targetedShare.putExtra(Intent.EXTRA_TEXT, String.valueOf(urlJson)); 
         targetedShare.setPackage(info.activityInfo.packageName.toLowerCase()); 
         targetedShareIntents.add(targetedShare); 
        } 
       } 
       Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share"); 
       chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[targetedShareIntents.size()])); 
       startActivity(chooserIntent); 
      } 
     } 
    } 

я стараюсь использовать другой код найденный на StackOverflow , и я стараюсь с другим устройством, и я пытаюсь использовать другое имя твиттер пакетов, например:

com.twitter.android.composer.ComposerActivity

com.twitter.android.DMActivity

com.twitter .android.PostAc сительности

и т.д ...

, но я до сих пор получил этот вопрос

ответ

0

я нашел решение, если кто-нибудь есть этот вопрос, вам нужно добавить твиттер отдельно в Intent списке с помощью этой функции:

public Intent findTwitterClient() { 
    final String[] twitterApps = { 
      "com.twitter.android", 
      "com.twidroid", 
      "com.handmark.tweetcaster", 
      "com.thedeck.android" }; 
    Intent tweetIntent = new Intent(); 
    tweetIntent.setType("text/plain"); 
    final PackageManager packageManager = getPackageManager(); 
    List<ResolveInfo> list = packageManager.queryIntentActivities(
      tweetIntent, PackageManager.MATCH_DEFAULT_ONLY); 
    for (int i = 0; i < twitterApps.length; i++) { 
     for (ResolveInfo resolveInfo : list) { 
      String p = resolveInfo.activityInfo.packageName; 
      if (p != null && p.startsWith(twitterApps[i])) { 
       tweetIntent.setPackage(p); 
       return tweetIntent; 
      } 
     } 
    } 
    return null; 
} 

И вы можете использовать его следующим образом: targetShareIntents.add (findTwitterClient());

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

  • Нет связанных вопросов^_^