2016-02-17 9 views
6

Finora ho cercato nel post StackOverflow e posso condividere il testo direttamente su Twitter senza mostrare la finestra di popup per la condivisione. Ciò significa che quando faccio clic sul pulsante viene direttamente reindirizzato all'app di Twitter e viene visualizzato il testo.Come condividere l'immagine http direttamente su Twitter in Android?

Il mio unico problema è che devo condividere l'immagine http direttamente su Twitter.

Sotto ho postato il codice di quello che ho provato finora:

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 quella sopra il codice di testo sta mostrando correttamente immagine twitter.But in sta mostrando in http url.

Chiunque sa come condividere l'immagine direttamente sull'app di Twitter senza mostrare il collegamento.

+0

Perché non usi un'API di Twitter? –

+0

le uniche immagini incorporate con l'intento web sono quelle con i domini 'pic.twitter.com'. – oldergod

+0

@oldergod puoi per favore approfondire di più. Non ti capisco. – Steve

risposta

7

È possibile utilizzare la finestra di dialogo TwitterComposer.

Ecco un esempio di codice.

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

Aggiungere le dipendenze nel file di Gradle

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

Questo è quello che vi serve

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

si può provare questo suo lavoro per me

L'immagine Uri:

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

Builder intenti

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

aggiungere questo alla tua dipendenze build.gradle:

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

stai mostrando l'immagine dal percorso del file giusto? Devo caricare l'immagine http da api.so non funziona con questo codice – Steve

+0

Sto caricando l'immagine http con Glide in local/path/to/image prima di usarlo – MrZ

+0

Senza ottenere l'immagine da filepath Devo condividere l'immagine direttamente a twitter.è possibile fare? – Steve

0

a chiamare:

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

Messaggio d'immagine:

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(); 
    } 
} 
Problemi correlati