7

Я пытаюсь использовать простой текст при использовании провайдера действий Share через ActionBarSherlock, и есть только четыре варианта для его совместного использования и без опции «Просмотреть все ...».Только четыре варианта для ShareActionProvider с ActionBarSherlock

Почему?

Это то, что он выглядит следующим образом:

и это то, что я хочу, чтобы это выглядело как:

+0

ActionShareProvider перечисляет все приложения, которые могут обрабатывать тип намерений, которые вы создаете для провайдера. Если вы видите только 4, то это единственные конкретные приложения, которые принимают данные о типе намерения, который вы создали. Также почему вы хотите, чтобы общий доступ к фотографиям (категория или приложение, не обязательно), был указан для простого текста? – Idistic

+0

Я пытаюсь использовать Провайдер действия действия в качестве опции для пользователей, чтобы поделиться ссылкой для загрузки моего приложения, и у меня есть приложения, такие как facebook и твиттер, и нет никаких вариантов для этих приложений. Картинка, на которой я хочу, похожа на другое приложение, которое я загрузил, и когда я выбираю «Просмотреть все ...» Есть около 10 различных приложений, в которых я могу поделиться. – GreekOphion

ответ

8

ИТАК независимо от ActionBarSherlock первого теста, чтобы увидеть, если ваше создание ваших намерений правильно, АБС использует тот же код, что и общий выборщик, чтобы посмотреть, будет ли приложение отображаться при выполнении этого кода.

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 ...")); 

Все это приложения, которые обрабатывают простой текст будет отображаться, если Facebook, или все, что вы ждете не там, то эти приложения не поддерживают ACTION_SEND намерения для типа вы зарегистрировали (обычный/текст). (Facebook делает, но подробнее об этом через минуту)

У АБС есть образец для использования поставщика акций, но он пытается отправить фотографию, а не текстовое сообщение (обновление статуса), которую вы должны использовать, это что-то как этот

@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 
} 

а вот цель, которая будет использоваться для сопоставления приложения и перечислить их из образца

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; 
    } 

но вы хотите быть

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")); 
    } 

Это должно дать вам тот же список в АБС, что и в маленьком тестовом заглушке, который я показал с помощью выбора выше.

Теперь о плохих новостях. Приложение Facebook действительно не работает, оно откроет страницу обновления пользователей, но текст не будет заполнен. Это снова включено, снова поломка, но я попробовал это прошлой ночью, и это провалилось. Это сообщенная и принятая ошибка с приложением facebook. Вы можете публиковать фотографии, хотя, хотя подпись не может быть установлена, см. How many times will Facebook break/fix this?

3

Просто заметьте будущим читателям, что ShareActionProvider ActionBarSherlock не поддерживает меню переполнения с версии 4.1. Возможно, это может быть обновлено в будущем.


Вот код из файла share_action_provider.xml из демки 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> 

Этот ответ для информации - это заняло у меня некоторое время, чтобы выяснить это, так что я хочу облегчить поиск будущих читателей.

Смежные вопросы