Android - манипулирование меню «поделиться» - PullRequest
0 голосов
/ 13 февраля 2012

сначала - позвольте мне сказать, что я НЕ спрашиваю, как реализовать кнопку общего доступа в моем приложении или что-то в этом роде. Я знаю все об использовании Intents и Intent Filters и т. Д. И т. Д.

что я спрашиваю о следующем: есть ли способ получить доступ к самому «Share» меню ? другими словами, я хотел бы создать приложение, которое отфильтровывает некоторые из услуг, которые я никогда не использую, но которое я не хочу полностью удалять из своего телефона.

Я попытался найти его в Android API, но нашел только информацию о том, как ваше приложение появилось в меню, или о том, как кнопка "Поделиться" в вашем приложении и т. Д.

Учитывая то, что я все еще начинающий программист, мне также интересно, есть ли какой-нибудь способ, чтобы я мог узнать об API-объектах, которые создаются / используются при создании / отображении меню «Поделиться»? Похоже, я мог бы сделать это в сеансе отладчика, но я не уверен, как.

Заранее спасибо. б

1 Ответ

1 голос
/ 13 февраля 2012

Ну, есть два способа обойти меню Share.Первый - использовать

startActivity(Intent.createChooser(Intent, CharSequence) 

Но в этом случае я не уверен, как получить доступ к созданному меню общего доступа, потому что это отдельное занятие.Однако, если вы хотите контролировать список элементов общего ресурса, отображаемых для вашего приложения, существует другой способ приблизиться к реализации пункта меню общего ресурса.Посмотрите на этот фрагмент кода:

//Prepare an intent to filter the activities you need
//Add a List<YourItemType> where you going to store the share-items
List<YourItemType> myShareList = new List<YourItemType>;

PackageManager packageManager = mContext.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
int numActivities = activities.size();

for (int i = 0; i != numActivities; ++i) {
    final ResolveInfo info = activities.get(i);
    String label = info.loadLabel(packageManager).toString();

    //now you can check label or some other info and decide whether to add the item
    //into your own list of share items

    //Every item in your list should have a runnable which will execute
    // proper share-action (Activity)
  myShareList.add(new YourItemType(label, info.loadIcon(packageManager), new Runnable() 
     {
       public void run() {
           startResolvedActivity(intent, info);
       }
 }));

}

Этот фрагмент кода показывает, как получить список действий, которые могут обрабатывать запрос на совместное использование.Далее вам нужно показать собственный интерфейс.Вам решать, что вы собираетесь выбрать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...