2016-02-17 10 views
6

Bisher habe ich in stackoverflow Beitrag gesucht und ich kann den Text direkt zu twittern, ohne den Popup-Dialog für share anzuzeigen.Das heißt, wenn ich auf den Button klicke, wird es direkt auf twitter app umgeleitet und zeigt den Text.Wie http Bild direkt an Twitter in Android teilen?

Mein einziges Problem ist, ich muss HTTP-Bild direkt auf Twitter teilen.

Im Folgenden werde ich den Code geschrieben haben, was ich bisher versucht:

UsersAdapter.java:

// Create intent using ACTION_VIEW and a normal Twitter url: 
     String tweetUrl = String.format("https://twitter.com/intent/tweet?text=%s&url=%s", 
       urlEncode(strShareText), 
       urlEncode(strShareImageUrl)); 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(tweetUrl)); 

     // Narrow down to official Twitter app, if available: 
     List<ResolveInfo> matches = context.getPackageManager().queryIntentActivities(intent, 0); 
     for (ResolveInfo info : matches) { 
      if (info.activityInfo.packageName.toLowerCase().startsWith("com.twitter")) { 
       intent.setPackage(info.activityInfo.packageName); 
      } 
     } 

     context.startActivity(intent); 

In diesem obigen Code Text korrekt in twitter.But Bild zeigt zeigt in http url.

Wer weiß, wie Sie das Bild direkt an Twitter App ohne Link zu zeigen.

+0

Warum verwenden Sie kein Twitter API? –

+0

Die einzigen eingebetteten Bilder mit dem Web Intent sind diejenigen mit den 'pic.twitter.com' Domains. – oldergod

+0

@oldergod kannst du bitte mehr ausarbeiten.Ich bekomme dich nicht. – Steve

Antwort

7

Sie können TwitterComposer Dialog verwenden.

Hier ist Beispielcode.

TweetComposer.Builder builder = new TweetComposer.Builder(mActivity) 
       .text("hello text"); 
       .image(Uri.parse("https://media-mediatemple.netdna-ssl.com/wp-content/uploads/2016/01/07-responsive-image-example-castle-7-opt.jpg")); 
builder.show(); 

hinzufügen Abhängigkeiten in gradle Datei

compile('com.twitter.sdk.android:twitter:[email protected]') { 
     transitive = true; 
} 
0

Dies ist, was Sie brauchen

intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file); 
0

Sie dieses seine Arbeit versuchen kann für mich

Das Bild Uri:

File myImageFile = new File("/path/to/image"); 
Uri myImageUri = Uri.fromFile(myImageFile); 

Intent Builder

TweetComposer.Builder builder = new TweetComposer.Builder(this) 
    .text("just setting up my Fabric.") 
    .image(myImageUri); 
builder.show(); 

diese zu Ihren build.gradle Abhängigkeiten hinzufügen:

dependencies { 
compile('com.twitter.sdk.android:tweet-composer:[email protected]') { 
    transitive = true; 
} 
} 
+0

Sie zeigen Bild von Dateipfad richtig? Ich muss HTTP-Bild von api.so laden es funktioniert nicht mit diesem Code – Steve

+0

Ich lade HTTP-Bild mit Glide in lokalen/Pfad/zu/Bild vor der Verwendung – MrZ

+0

Ohne Bild von Dateipfad zu bekommen muss ich das Bild direkt teilen zu twitter.is ist es möglich zu tun? – Steve

0

zu nennen:

new PostPicture(MyActivity.this).execute("IMAGE_URL"); 

Beitrag Bild:

private class PostPicture extends AsyncTask<String, Void, File> { 
    private final Context context; 

    public PostPicture(Context context) { 
     this.context = context; 
    } 

    @Override 
    protected File doInBackground(String... params) { 

     FutureTarget<File> future = Glide.with(getApplicationContext()) 
       .load(params[0]) 
       .downloadOnly(600, 600); 

     File file = null; 
     try { 
      file = future.get(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return file; 
    } 

    @Override 
    protected void onPostExecute(File result) { 
     if (result == null) { 
      return ; 
     } 

     Uri uri = FileProvider.getUriForFile(getApplicationContext(), 
     getApplicationContext().getPackageName(), result); 
     postIt(uri); 
    } 

    private void postIt(Uri result) { 
     TweetComposer.Builder builder = new TweetComposer.Builder(this) 
       .text("Post Image from URl.") 
       .image(result); 
     builder.show(); 
    } 
} 
Verwandte Themen