Intereting Posts
К сожалению, системный интерфейс остановлен SwipeRefreshLayout вмешивается в setOnScrollListener Плохая производительность SQLite на внешнем хранилище в Android Как удалить лишнее пространство над и под imageView? Получить проверенные элементы из списка в android Почему андроид получает неправильный сертификат ssl? (Два домена, один сервер) Раздел алфавитов Android Listview, как список контактов appviewview Как проверить, является ли приложение не системным приложением в Android? Как использовать Javascript для обнаружения, когда Android-приложение на основе Phonegap теряет фокус Изменение местоположения загрузки по умолчанию Когда использовать кинжал в приложении для Android? Привет, мировой модуль ядра для android и неизвестного переселения: 27, когда insmod Android распознавания голоса Android офлайн В Android-приложении, когда ресурсы загружаются в память? Android Studio – Как увеличить размер выделенной кучи

Только четыре варианта для ShareActionProvider с ActionBarSherlock

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

Почему это?

Вот как это выглядит:

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

Solutions Collecting From Web of "Только четыре варианта для ShareActionProvider с ActionBarSherlock"

ОК, поэтому, несмотря на первый тест ActionBarSherlock, чтобы увидеть, правильно ли вы создаете свое намерение, ABS использует тот же код, что и общий выборщик, чтобы посмотреть, будет ли приложение отображаться при выполнении этого кода.

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 для зарегистрированного вами типа (plain / text). (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")); } 

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

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

Просто заметьте будущим читателям, что 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> 

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