2015-10-20 11 views
5

Sadece Tweet ile resim paylaşmam gerek. İşte Android paylaşım amacı Twitter: Yalnızca Tweet veya Doğrudan İleti ile nasıl paylaşılır?

kodum

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

ve ben sonuç almak: share only via 5 apps

tık "Android Sistemi", Twitter paylaş açılır: share Twitter

Benim istediğim:

  1. Twitter'da sadece Tweet veya Doğrudan Mesaj ile nasıl paylaşım yapılır?

  2. Paylaşım öğesinin başlığı & simgesi nasıl değiştirilir. Ex Twitter, "Android Sisteminden" "Tweet" e geçiş yapsın mı?

+0

. Daha fazla upvotes olmadığı için şaşırdım. Bu sorunu çözebildiniz mi? – treesAreEverywhere

+0

Üzgünüm, bitiremedim :( –

cevap

4

Önde hem Tweet hem de Direkt Mesaj almayı başaramadım ancak aşağıdaki kod size bir tane getirecek. Aslında her ikisini de önden alabilirsin ama ikisi de aynı adla "Tweet" yazıyor, bu yüzden kullanılamaz. Ayrıca facebook, insta ve tumblr dahil ettik. Tweet'in yerine Doğrudan İleti almak için com.twitter.android.composer.ComposerActivity'u com.twitter.android.DMActivity ile değiştirin. Hem DMActivity için bir başka 'if' ekleyin.

Elbette söyleyemem ama paketin Simgesini uygulamanız için değiştirebileceğinizi sanmıyorum. Yeni Tweet beste için

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

: Burada aynı sorunu yaşıyorsunuz

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; 
} 
İlgili konular