2011-11-29 8 views
21

Interesuje mnie zamiar udostępniania, jest idealny do otwierania aplikacji do udostępniania z parametrami obrazu i tekstu.Jak zmusić Share Intent do otwarcia konkretnej aplikacji?

Ale teraz badam sposób na wymuszenie zamiaru otwarcia konkretnej aplikacji z listy, z parametrami nadanymi zamiar udziału.

To jest mój aktualny kod, pokazuje listę aplikacji do udostępniania zainstalowanych w telefonie. Proszę, możesz mi kiedyś powiedzieć, co powinienem dodać do kodu, żeby wymusić na przykład oficjalną aplikację na Twitterze? i oficjalna aplikacja faccebok?

Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
Uri screenshotUri = Uri.parse("file:///sdcard/test.jpg"); 
sharingIntent.setType("image/*"); 
sharingIntent.putExtra(Intent.EXTRA_TEXT, "body text"); 
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri); 
startActivity(Intent.createChooser(sharingIntent, "Share image using")); 

Dzięki

+0

Czy masz pytania związane z Facebookiem? – Lix

+0

Czy to nie zawiedzie, jeśli nie użyje oficjalnej aplikacji Twittera? Dlaczego chcesz ograniczyć sposób udostępniania akcji? – lathomas64

Odpowiedz

34

Na Facebooku

public void shareFacebook() { 
     String fullUrl = "https://m.facebook.com/sharer.php?u=.."; 
     try { 
      Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
      sharingIntent.setClassName("com.facebook.katana", 
        "com.facebook.katana.ShareLinkActivity"); 
      sharingIntent.putExtra(Intent.EXTRA_TEXT, "your title text"); 
      startActivity(sharingIntent); 

     } catch (Exception e) { 
      Intent i = new Intent(Intent.ACTION_VIEW); 
      i.setData(Uri.parse(fullUrl)); 
      startActivity(i); 

     } 
    } 

na Twitterze.

public void shareTwitter() { 
     String message = "Your message to post"; 
     try { 
      Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
      sharingIntent.setClassName("com.twitter.android","com.twitter.android.PostActivity"); 
      sharingIntent.putExtra(Intent.EXTRA_TEXT, message); 
      startActivity(sharingIntent); 
     } catch (Exception e) { 
      Log.e("In Exception", "Comes here"); 
      Intent i = new Intent(); 
      i.putExtra(Intent.EXTRA_TEXT, message); 
      i.setAction(Intent.ACTION_VIEW); 
      i.setData(Uri.parse("https://mobile.twitter.com/compose/tweet")); 
      startActivity(i); 
     } 
    } 
+0

Czy mogę dołączyć zdjęcie do tweeta? – Intathep

+6

To już nie działa na Facebooku – younes0

+1

Daje aktywność nie znaleziono wyjątek enen, jeśli aplikacja Twitter jest zainstalowany – Rahul

1

100% roztworu roboczego

jeśli chcesz udostępnić coś w dowolnej aplikacji, którą chcesz lub otworzyć URL poprzez każde działanie, wystarczy użyć tej metody:

private void shareOrViewUrlViaThisApp(String appPackageName, String url) { 
    boolean found = false; 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setData(Uri.parse(url)); 

    List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(intent, 0); 
    if (!resInfo.isEmpty()){ 
     for (ResolveInfo info : resInfo) { 
      if (info.activityInfo.packageName.toLowerCase().contains(appPackageName) || 
        info.activityInfo.name.toLowerCase().contains(appPackageName)) { 

       intent.setPackage(info.activityInfo.packageName); 
       found = true; 
       break; 
      } 
     } 
     if (!found) 
      return; 

     startActivity(Intent.createChooser(intent, "Select")); 
    } 
} 

i po prostu zadzwoń:

shareOrViewUrlViaThisApp(<your package name>,<your url>); 

Ta odpowiedź została zainspirowana wersją this.

Powiązane problemy