Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
#1

ShareActionProvider support library - Android

22.05.2014, 21:59. Просмотров 722. Ответов 5
Метки нет (Все метки)

Возникла необходимость в ShareActionProvider на апи ниже 14. Скачал и поставил либу поддержки, как сказано в мануале
http://developer.android.com/tools/s...ary/setup.html

пробую делать так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private ShareActionProvider myShareActionProvider;
    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
         getMenuInflater().inflate(R.menu.share_action_provider, menu);  
         
         MenuItem menuItem_Info = menu.add(0, R.id.menu_item_share, 0, "Info");
         MenuItemCompat.setShowAsAction(menuItem_Info,MenuItem.SHOW_AS_ACTION_ALWAYS|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
 
         MenuItem shareItem = menu.findItem(R.id.action_share);
         myShareActionProvider = (ShareActionProvider)MenuItemCompat.getActionProvider(shareItem);
         // myShareActionProvider  тут равен null
         setShareIntent(); 
         return true;   
    }   
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
              return super.onOptionsItemSelected(item);    
    }
    private void setShareIntent(){
          Intent intent = new Intent(Intent.ACTION_SEND);
          intent.setType("plain/text");
          intent.putExtra(Intent.EXTRA_TEXT, "Hello from android-er.blogspot.com"); 
 
          myShareActionProvider.setShareIntent(intent); 
         }
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
05-22 21:55:00.427: E/AndroidRuntime(11812): FATAL EXCEPTION: main
05-22 21:55:00.427: E/AndroidRuntime(11812): java.lang.NullPointerException
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.example.gallery.imageScreen.setShareIntent(imageScreen.java:637)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.example.gallery.imageScreen.onCreateOptionsMenu(imageScreen.java:608)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.app.Activity.onCreatePanelMenu(Activity.java:2260)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:366)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:650)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1322)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1845)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2758)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2730)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1999)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.os.Looper.loop(Looper.java:150)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.app.ActivityThread.main(ActivityThread.java:4385)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at java.lang.reflect.Method.invokeNative(Native Method)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at java.lang.reflect.Method.invoke(Method.java:507)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at dalvik.system.NativeStart.main(Native Method)
в коде подписал, где myShareActionProvider null, хотя не должен быть таковым.
Мб я что-то не верно делаю?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 21:59     ShareActionProvider support library
Посмотрите здесь:

Android GetSupportLoaderManager и импорт support библиотек
Android Android-support-v4 и настройка Eclips
Android Android.support.v4.view.ViewPager одним xml+java файлом
Android-support-v7 ошибка Android
Как в среде Eclipse подключить библиотеку android.support.v7 ? Android
Android Android.support.v7
Подключение темы из Support Library Android
Bullet Physics Library Android
Android Как подключить com.android.support:design в Eclipse
Android Desing Support на eclipce
Android Ошибки android-support-v7 при создании нового проекта в Eclipse
Для чего нужен android.support.v4 Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
26.05.2014, 09:50     ShareActionProvider support library #2
Цитата Сообщение от spydark91 Посмотреть сообщение
я что-то не верно делаю?
Покажите что у вас в R.menu.share_action_provider
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
27.05.2014, 23:07  [ТС]     ShareActionProvider support library #3
share_action_provider.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<menu 
     xmlns:myapp="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_share"
        android:title="Share"
        myapp:actionProviderClass="android.support.v7.widget.ShareActionProvider"
        myapp:showAsAction="always|withText" />
    <item
        android:id="@+id/action_settings"
        myapp:showAsAction="always|withText"
        android:title="@string/action_settings"/>
    <item
        android:id="@+id/menu_item_share"
        myapp:showAsAction="always|withText"
        android:title="@string/action_settings"/>
 
</menu>
Добавлено через 1 минуту
вообще хотелось бы выводить список возможных приложений, куда делимся, не по нажатию кнопки "меню" и не во всплывающее окошечко
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
28.05.2014, 10:39     ShareActionProvider support library #4
Цитата Сообщение от spydark91 Посмотреть сообщение
share_action_provider.xml
Я попробовал ваш код, и у меня возникла та же проблема, но в итоге разобрался:
Вероятно, что ваша активити (imageScreen.java) является наследником класса Activity, а нужно наследоваться от ActionBarActivity. После этого myShareActionProvider перестанет быть всё время null'ом
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
02.06.2014, 12:43  [ТС]     ShareActionProvider support library #5
Работает, но несколько не так, как задумывалось
И вариантов шаринга как то маловато(есть только те, в которых у меня есть учетная запись и нет даже блютуза. )Хотя когда захожу в стандартную галерею, например, при нажатии на кнопку "опубликовать через", вылазит оошечко с кучей возможностей публикации, даже тех мест, где у меня нет учетной записи. Вот как бы сделать такое?

Добавлено через 36 секунд
хотелось бы вообще уйти от работы с меню
и сделать именно как в приведенном мной примере

Добавлено через 7 минут
Нашел то, что хотел. Мб кому пригодится
http://androidthings.blogspot.ru/201...l#.U4w4Ovl_vW5
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
02.06.2014, 12:46     ShareActionProvider support library #6
Цитата Сообщение от spydark91 Посмотреть сообщение
И вариантов шаринга как то маловато
Количество вариантов шаринга напрямую зависит от вашего ShareIntent'а и от количества приложений которые могут этот интент обработать.
Цитата Сообщение от spydark91 Посмотреть сообщение
хотелось бы вообще уйти от работы с меню
Если не хотите меню, то ShareActionProvider вам категорически не подходит. Чтоб вылезало окошечко вам нужно проделать примерно следующее:
1) При помощи PacketManager'a получить список активити разных приложений которые могут обработать ваш интент
2) Вытащить название и иконку этих активити
3) Красиво представить это в виде окошечка
4) Реализовать логику позволяющую запускать конкретную выбранную активити, передавая ей ваш интент.
Yandex
Объявления
02.06.2014, 12:46     ShareActionProvider support library
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru