7

Estoy tratando de compartir texto sin formato mientras uso un Share Action Provider a través de ActionBarSherlock y solo hay cuatro opciones para compartirlo y ninguna opción "Ver todo ...".Solo cuatro opciones para ShareActionProvider con ActionBarSherlock

¿Por qué es eso?

Esto es lo que parece:

y esto es lo que quiero que se vea como:

+0

ActionShareProvider enumera todas las aplicaciones que pueden manejar el tipo de intención que usted crea para el proveedor. Si solo está viendo 4, esas son las únicas aplicaciones específicas que aceptan datos del tipo de intención que creó. Además, ¿por qué quieres que se comparta una foto (categoría o aplicación, no estoy seguro) para texto sin formato? – Idistic

+0

Estoy tratando de utilizar el Share Action Provider como una opción para que los usuarios compartan un enlace para descargar mi aplicación y tengo aplicaciones como Facebook y Twitter, y no hay opciones para esas aplicaciones. La imagen que tengo de lo que quiero que parezca es otra aplicación que he descargado y cuando selecciono "Ver todo ..." Hay alrededor de 10 aplicaciones diferentes en las que puedo compartir. – GreekOphion

Respuesta

8

Aceptar lo que independientemente de ActionBarSherlock primera prueba para ver si su creación de su intento correctamente, ABS usa el mismo código que el selector genérico, así que vea si la aplicación que está buscando aparece cuando ejecuta este código.

Intent I= new Intent(Intent.ACTION_SEND); 
    I.setType("text/plain"); 
    I.putExtra(android.content.Intent.EXTRA_TEXT, "My Test Text"); 

    startActivity(Intent.createChooser(I,"Share using ...")); 

Todo eso aplicación de que se encargan de texto plano se nos mostrarán, en caso de Facebook, o lo que usted está esperando no está allí entonces esos de aplicaciones no son compatibles con la intención ACTION_SEND para el tipo que se haya registrado (normal/texto) (Facebook lo hace, pero más sobre eso en un minuto)

ABS tiene un ejemplo para usar el proveedor de acciones, pero intenta enviar una foto, no un mensaje de texto (actualización de estado), la configuración que debe usar es algo como esto

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate your menu. 
    getSupportMenuInflater().inflate(R.menu.share_action_provider, menu); 

    // Set file with share history to the provider and set the share intent. 
    MenuItem item = menu.findItem(R.id.menu_item_share_action_provider_action_bar); 
    ShareActionProvider provider = (ShareActionProvider) item.getActionProvider(); 
        provider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); 
    // Note that you can set/change the intent any time, 
    // say when the user has selected an image. 
    provider.setShareIntent(createShareIntent()); 

    return true 
} 

y aquí es la intención que se utilizará para que coincida con la aplicación de la lista y sacarlos de la muestra

private Intent createShareIntent() { 
     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType("image/plain"); 
     Uri uri = Uri.fromFile(getFileStreamPath("shared.png")); 
     shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
     shareIntent.putExtra(Intent.EXTRA_TITLE, "This is an android icon"); 
     return shareIntent; 
    } 

pero usted quiere que sea

private Intent createShareIntent() { 
     Intent I= new Intent(Intent.ACTION_SEND); 
     I.setType("text/plain"); 
     I.putExtra(android.content.Intent.EXTRA_SUBJECT, "TEST - Disregard"); 
     I.putExtra(android.content.Intent.EXTRA_TEXT, Uri.parse("http://noplace.com")); 
    } 

Esto debería darle la misma lista en ABS que en el pequeño talón de prueba que mostré con el selector anterior.

Ahora las malas noticias. La aplicación de Facebook realmente no funciona, mostrará la página de actualización de los usuarios, pero no completará el texto. Esto es una rotura de nuevo, una vez más, pero lo intenté anoche y estaba fallando. Es un error informado y aceptado con la aplicación de Facebook. Sin embargo, puede publicar fotografías, aunque no se puede establecer la leyenda, vea How many times will Facebook break/fix this?

3

Solo una nota para lectores futuros que ActionBarSherlock's ShareActionProvider no admite el menú de desbordamiento a partir de v4.1.0. Quizás esto podría actualizarse en el futuro.


Aquí es el código del archivo share_action_provider.xml de la demo SampleList:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@+id/menu_item_share_action_provider_action_bar" 
     android:showAsAction="always" 
     android:title="@string/action_bar_share_with" 
     android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" /> 

    <!-- XXX: For now, ShareActionProviders must be displayed on the action bar --> 
    <!--item android:id="@+id/menu_item_share_action_provider_overflow" 
     android:showAsAction="never" 
     android:title="@string/action_bar_share_with" 
     android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" /--> 

</menu> 

esta pregunta para obtener información - me tomó bastante tiempo para averiguar esto, por lo que quiero hacer que sea más fácil de encontrar para los futuros lectores.

Cuestiones relacionadas