2016-06-06 1 views
0

페이스 북, 트위터, g +를 통해서만 데이터를 공유하려고하므로 사용자 정의 인 텐트 목록을 만들고 텍스트를 보낼 수 있습니다. 하지만 트위터와 디스플레이 문제가 당신이 Systeme의 안드로이드를 볼 수 있습니다 enter image description here사용자 정의 인 텐트 목록으로 데이터 공유

아래를 참조했고, 내가 그것을 클릭하면, 나는이있어이에서

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

그리고

이 하나 난 그냥 위의 목록을 사용하고 사용하고 싶습니다 패키지 내 휴대 전화에있는 경우 루프는, 나는 ACTION_SEND와 인 텐트 호출 targetedShare를 만들고 그 안에 텍스트를 넣어, 그리고 마지막으로

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

는 I에 유래에서 발견 된 일부 다른 코드를 사용하려고 targetedShareIntents 목록에 추가 , 나는 다른 장치와 함께 시도하고 내가 좋아하는 다른 트위터 패키지 이름을 사용하려고 :

com.twitter.android.composer.ComposerActivity

com.twitter.android.DMActivity

com.twitter .android.PostAc tivity

등 ...

하지만 난 아직도 내가 사람이 문제가있는 경우이 솔루션은,이 기능을 텐트 목록에서 개별적으로 트위터를 추가 할 필요가 발견

답변

0

이 문제를 가지고 :

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

그리고 다음과 같이 사용할 수 있습니다. targetedShareIntents.add (findTwitterClient());