2016-04-04 3 views
2

Я использую намерение.ACTION_GET_CONTENT, чтобы позволить пользователю выбирать только изображения или видеофайлы. это способ готовит намерениеКак отфильтровывать нежелательные файлы с помощью Intent.ACTION_GET_CONTENT

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("image/* | video/*"); 
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
intent.addCategory(Intent.CATEGORY_OPENABLE); 
XActivity.startActivityForResult(intent, ACQUIRE_IMAGE_AND_VIDEOS_CODE); 

Когда я нажимаю кнопку, которая начала это намерение, следующие приложения являются дисплей в моем настроить диалоговом

app dialog

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

private void inflateDialog(List<ResolveInfo> intents){ 

ListView lv = (ListView) dialog.findViewById(R.id.listView1); 

Collections.sort(intents, 
     new ResolveInfo.DisplayNameComparator(packageManager)); 

appAdapter = new AppAdapter(packageManager, intents); 

lv.setAdapter(appAdapter); 
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
          long arg3) { 
     // TODO Auto-generated method stub 
     ResolveInfo launchable = appAdapter.getItem(position); 
     ActivityInfo activity = launchable.activityInfo; 
     ComponentName name = new ComponentName(activity.applicationInfo.packageName, 
       activity.name); 
     IntentFilter filter = launchable.filter; 

     Iterator<String> actions = filter.actionsIterator(); 

     Intent intent; 

      if (filter.hasAction(Intent.ACTION_GET_CONTENT)) { 
       intent = new Intent(Intent.ACTION_GET_CONTENT); 
       intent.setType("image/* | video/*"); 
       intent.setComponent(name); 
       intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
       intent.addCategory(Intent.CATEGORY_OPENABLE); 
       xActivity.startActivityForResult(intent, ACQUIRE_IMAGE_AND_VIDEOS_REQUEST_CODE); 
       dialog.dismiss(); 
      } 
}); 
dialog.show(); 

} 

Когда i cl ick на приложении galley, я могу видеть изображения и видео и выбирать любой. В то же время, Я получаю тост, говорящий мне 0 изображений/видео.

Когда я нажимаю файловый менеджер и привод Google, я представляю все файлы. не фильтруется изображений и видео, которое происходит.

ВОПРОСЫ

  • Как я могу заставить фильтрации изображений и видео в файловом менеджере и приводные приложениях Google?

  • Почему я получаю тост 0 изображений/видео на камбузе, хотя я могу выбирать изображения и видео?

+0

был у меня ответ, так как я тоже не ableto фильтр его. – TheReprator

+0

@VikramSingh см. Мой ответ ниже –

ответ

0

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

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 

    if (resultCode == RESULT_OK) { 

     String filePath; 
     Uri file = intent.getData(); 
     String mimeType =""; 

     if(file.getScheme().equals(ContentResolver.SCHEME_CONTENT)){ 

      mimeType = ctx.getContentResolver().getType(selectedImage); 

      }else{ 
      String fileExtension = MimeTypeMap.getFileExtensionFromUrl(file.toString()); 
      mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension.toLowerCase()); 
      } 


      if(mimeType.startsWith("video/")){ 
      //do something. for my case i get video path 
       filePath = getFilePath(file); 


      }else if(mimeType.startsWith("image/")){ 
       //do something. for my case i get image path 
       filePath = getFilePath(file); 
      } 
     } 
} 

мой метод getFilePath

private String getFilePath(Uri fileuri){ 
String filePath = ""; 

if (fileuri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) { 
    Cursor cursor = this.getContentResolver().query(fileuri, new String[]{android.provider.MediaStore.Images.ImageColumns.DATA}, null, null, null); 
    cursor.moveToFirst(); 
    filePath = cursor.getString(0); 

    cursor.close(); 
} else { 
    filePath = fileuri.getPath(); 
} 
    return filePath; 
} 

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

  • Нет связанных вопросов^_^