2016-05-12 31 views
7

Sto tentando di utilizzare lo shareintent nella mia app, ma ho riscontrato un problema durante la condivisione di un collegamento a Facebook, nessuna immagine viene mostrata con l'anteprima. Quindi, ho provato a personalizzare lo sharepoint Android in modo che utilizzi la funzionalità di condivisione di facebooksdk quando Facebook è selezionato, ma non riesco a farlo funzionare. Sotto è il codice che ho provato per personalizzare l'shareintent,Utilizzare ShareContent di Facebook sdk nell'intenzione di condivisione android

Intent share = new Intent(android.content.Intent.ACTION_SEND);   
PackageManager pm = getPackageManager(); 
List<ResolveInfo> activityList = pm.queryIntentActivities(share, 0); 
for (final ResolveInfo app : activityList) { 
    if (app.activityInfo.packageName.toLowerCase().startsWith("com.facebook.katana")) { 
     ShareLinkContent content = new ShareLinkContent.Builder() 
          .setContentTitle(property.PropertyName) 
          .setImageUrl(Uri.parse(property.ImagePath)) 
          .setContentUrl(Uri.parse(property.PropertyPermaLink)) 
          .build(); 

     ShareDialog shareDialog = new ShareDialog(this); 

     shareDialog.canShow(content); 

     break; 
    } else { 
     share.setType("text/plain"); 
     share.addFlags(share.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
     share.putExtra(Intent.EXTRA_SUBJECT, ""); 
     share.putExtra(Intent.EXTRA_TEXT, property.PropertyPermaLink); 
     startActivity(Intent.createChooser(share, "Share property!")); 
    } 
} 

Dopo debug del codice sopra ho scoperto che l'activitylist consiste solo di un singolo elemento. Quindi, come posso risolvere questo problema?

+0

controlla questa domanda, forse ti aiuterà http://stackoverflow.com/questions/35155890/android-share-custom-link-via-facebook –

+0

Questo è solo per la condivisione di facebook. Ma voglio personalizzare la mia intenzione di condividere la condivisione di Facebook desiderata dall'intenzione. –

risposta

1

è necessario aggiungere il tipo di dati Mime che l'intento di invio sta trattando per ottenere le opportune attività restituiti:

share.setType("text/plain"); 
0

Basta provare SharePhotoContent invece di ShareLinkContent. Se si desidera utilizzare ShareLinkContent, assicurarsi che property.ImagePath indichi il collegamento dell'immagine http reale. Se il collegamento contiene https, verifica che funzioni nell'app browser Android predefinita.