2015-10-20 24 views
5

Tôi cần chia sẻ hình ảnh chỉ qua Tweet.Mục đích chia sẻ của Android Twitter: Cách chia sẻ chỉ bằng Tweet hoặc Tin nhắn Trực tiếp?

Đây là mã của tôi

Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType("image/*"); 
     if (mInsertableToGallery) { 
      mInsertableToGallery = false; 
      mInsertedImagePath = MediaStore.Images.Media.insertImage(getContentResolver(), mShareImage, 
        getResources().getString(R.string.app_name) + System.currentTimeMillis(), getResources().getString(R.string.app_name)); 
     } 
     // share only 5 specific apps: 
     List<Intent> targetedShareIntents = new ArrayList<>(); 
     List<ResolveInfo> resInfos = getPackageManager().queryIntentActivities(shareIntent, 0); 
     if (!resInfos.isEmpty()) { 
      for (ResolveInfo resolveInfo : resInfos) { 
       String packageName = resolveInfo.activityInfo.packageName; 
       Intent targetedShareIntent = new Intent(Intent.ACTION_SEND); 
       targetedShareIntent.setType("image/*"); 
       targetedShareIntent.setPackage(packageName); 
       targetedShareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(mInsertedImagePath)); 
       if (TextUtils.equals(packageName, "com.facebook.katana") //fb 
       ||TextUtils.equals(packageName, "com.instagram.android") //instagram 
       ||TextUtils.equals(packageName, "jp.naver.line.android") //line 
       ||TextUtils.equals(packageName, "com.google.android.apps.plus") // plus 
       ||TextUtils.equals(packageName, "com.twitter.android")) // twitter 
      { 
       targetedShareIntents.add(targetedShareIntent); 
      } 

      } 
     } 
     Intent chooser = Intent.createChooser(targetedShareIntents.remove(0), ""); 
     chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{})); 
     startActivity(chooser); 

và tôi nhận được kết quả: share only via 5 apps

Khi nhấp chuột "Android System", Twitter chia sẻ popup: share Twitter

Những gì tôi muốn:

  1. Cách chia sẻ qua Twitter chỉ bằng Tweet hoặc Tin nhắn Trực tiếp?

  2. Cách thay đổi tiêu đề & biểu tượng mục chia sẻ. Ex chia sẻ mục Twitter từ "Hệ thống Android" tới "Tweet"?

+0

Có cùng một vấn đề ở đây. Ngạc nhiên là không có nhiều upvotes hơn. Bạn có thể giải quyết vấn đề này không? – treesAreEverywhere

+0

xin lỗi, tôi không thể hoàn thành công việc :( –

Trả lời

4

Tôi không thể quản lý cả tin nhắn Tweet và tin nhắn trực tiếp ở phía trước nhưng mã sau đây sẽ đưa bạn đến một trong số đó. Trên thực tế bạn có thể nhận được cả hai phía trước nhưng cả hai xuất hiện với cùng một tên "Tweet" để loại của nó không sử dụng được. Tôi cũng đã bao gồm facebook, insta và tumblr. Để nhận tin nhắn trực tiếp thay cho tweet thay thế com.twitter.android.composer.ComposerActivity bằng com.twitter.android.DMActivity. Để thêm cả hai 'if' cho DMActivity.

Không thể nói chắc chắn nhưng tôi không nghĩ bạn có thể thay đổi Biểu tượng của gói cho ứng dụng của bạn.

List<Intent> targetedShareIntents = new ArrayList<Intent>(); 
     Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); 
     shareIntent.setType("image/jpeg");//("text/plain"); 
     Uri uri = Uri.fromFile(outFile); 
     shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
     List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(shareIntent, 0); 
     for (ResolveInfo resolveInfo : resInfo) { 
      String packageName = resolveInfo.activityInfo.packageName; 
      Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND); 
      targetedShareIntent.setType("image/jpeg"); 
      targetedShareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
      if(TextUtils.equals(packageName,"com.facebook.katana")|TextUtils.equals(packageName,"com.instagram.android") 
        |TextUtils.equals(packageName,"com.tumblr")) { 
       targetedShareIntent.setPackage(packageName); 
       targetedShareIntents.add(targetedShareIntent); 
      } 
      if(TextUtils.equals(resolveInfo.activityInfo.name,"com.twitter.android.composer.ComposerActivity")) { 
       targetedShareIntent.setPackage(packageName); 
       targetedShareIntent.setClassName(
         resolveInfo.activityInfo.packageName, 
         resolveInfo.activityInfo.name); 
       targetedShareIntents.add(targetedShareIntent); 
      } 
     } 
     Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Select app to share"); 
     chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{})); 
     startActivity(chooserIntent); 
0

Đối với sáng tác Tweet mới:

public static Intent getTwitterShareIntent(Context context) { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    shareIntent.setClassName("com.twitter.android", 
      "com.twitter.composer.ComposerShareActivity"); 
    return shareIntent; 
} 
Các vấn đề liên quan