2016-07-06 10 views
0

Я хотел бы отфильтровать список, который вы видите ниже. Следует выбирать только файл-проводник.Android Filter Intent Chooser

intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse(Environment.getExternalStorageDirectory() + "/Android/data/" + getContext().getPackageName() + "/Files"); 
intent.setDataAndType(uri, "*/*"); 
startActivity(Intent.createChooser(intent, getString(R.string.openFolder))); 

Example

EDIT:

Example

ответ

0

Добавить это в Intent, это откроет ES File Explorer

Intent intent = new Intent(android.content.Intent.ACTION_SEND); 
intent.setType("*/*"); 
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(filePath))); 
intent.setPackage("com.estrongs.android.pop"); 
startActivity(shareIntent); 
+1

Я считаю, что он просит варианты открыть желаемый каталог в приложении для менеджера контента, а не отправлять файл, не так ли? –

+0

Не следует открывать ES явно, а список файлов-проводников! – XxGoliathusxX

0

Убедитесь, что каталог существует, то попробуйте следующее:

Intent fileManagers = new Intent(); 
fileManagers.setAction(Intent.ACTION_GET_CONTENT); 
File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) 
       .getAbsolutePath()); 
Uri uri = Uri.fromFile(dir); 
fileManagers.setDataAndType(uri, "file/*"); 
startActivity(Intent.createChooser(fileManagers, null)); 
+0

Это открывает Google Диск на моем устройстве – XxGoliathusxX

+0

Обновленный ответ, попробуйте этот –

0

Вы можете позвонить по указанной ниже функции типа этого имя пакета файл-исследователь как если вы хотите обмениваться данными в Twitter называют это как initShareIntent ("com.twitter.android");

private void initShareIntent(String type) { 
     boolean found = false; 
     Intent share = new Intent(android.content.Intent.ACTION_SEND); 
     share.setType("image/jpeg"); 

     // gets the list of intents that can be loaded. 
     List<ResolveInfo> resInfo = getActivity().getPackageManager().queryIntentActivities(share, 0); 
     if (!resInfo.isEmpty()) { 
      for (ResolveInfo info : resInfo) { 
       if (info.activityInfo.packageName.toLowerCase().contains(type) || 
         info.activityInfo.name.toLowerCase().contains(type)) { 


       //Share Data here 

        share.setPackage(info.activityInfo.packageName); 
        found = true; 
        break; 
       } 
      } 
      if (!found) { 
       Toast.makeText(getActivity(), share_type + " not found in Device", Toast.LENGTH_SHORT).show(); 
       return; 
      } 

      startActivity(Intent.createChooser(share, "Select")); 
     } 
    } 

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

+0

дайте мне секунду! :) – XxGoliathusxX

+0

Что такое тип и share_type? – XxGoliathusxX

+0

Я не хочу делиться данными. Я хочу открыть его – XxGoliathusxX

1

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

Во-первых, любой может написать любое приложение, чтобы ответить на любой желаемый неявный Intent.

Во-вторых, универсального определения «файлового исследователя» нет. Что вы думаете, что «файловый исследователь» может отличаться от того, что другие разработчики считают «файловым исследователем», который, в свою очередь, может отличаться от того, что пользователей считают «файловым проводником». Устройство пользователя может даже не иметь «файл-исследователь», от чьего-либо определения.

+0

Я создал нечто похожее, которое показывает только поставщика услуг электронной почты, который работает хорошо! – XxGoliathusxX

+0

@CommonsWare, есть ли какие-либо рекомендации для рассмотрения в случае, если мы собираемся разрабатывать контент-менеджеров? –

+0

@XxGoliathusxX: Не стесняйтесь объяснять, как вы заплатили за тестирование тысяч устройств Android и миллионов приложений Android (ежедневно растет), чтобы подтвердить, что ваш код «показывает только поставщика электронной почты». Я не сомневаюсь, что для нескольких протестированных вами устройств и нескольких приложений на этих устройствах ваш код может «показывать только поставщика электронной почты». – CommonsWare

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