Файлы не могут быть выбраны после вызова ACTION_GET_CONTENT Intent

Я разрабатываю приложение, и в этом упражнении нажата кнопка, и любой файл может быть выбран для загрузки. Выбор файла загружается правильно, но все изображения недоступны (выделены серым цветом). Я добавил разрешение READ_EXTERNAL_STORAGE в файл манифеста, но я понятия не имею, почему он все еще не позволит мне выбрать файл. Вот код, который я использую

private Button uploadButton; private TextView uploadFile; private static final int PICKFILE_RESULT_CODE = 1; private String selectedImagePath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); uploadButton = (Button)findViewById(R.id.upload_button); uploadFile = (TextView)findViewById(R.id.uploadFile); uploadButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v){ Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("file/*"); startActivityForResult(intent, PICKFILE_RESULT_CODE); }}); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode){ case PICKFILE_RESULT_CODE: if (resultCode==RESULT_OK){ String FilePath = data.getData().getPath(); uploadFile.setText(FilePath); } break; } } 

Бланделл упомянул об этом в комментарии выше, но вы также можете добавить ниже в свой файл манифеста. Также попробуйте использовать setType («image / *).

  <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" /> 

Попробуйте установить тип "*/* как это предлагает Бланделл .

Если вы не хотите, чтобы пользователь мог выбирать содержимое любого типа, вы должны зарегистрировать тип файла в onActivityResult ( этот ответ показывает, как). Затем попробуйте пару действительных файлов, просмотрите журнал и соответствующим образом измените значение intent.setType . Вы можете использовать несколько типов в KitKat и выше, как описано в этом ответе .

Когда я попытался с помощью marshmellow и выше приведенного ниже кода помог. Я пробовал с c # (xamarin). Ключевым является множественный тип mime. Надеюсь, это поможет кому-то

 Intent intent = new Intent(Intent.ActionOpenDocument); intent.SetType("file/*"); intent.AddCategory(Intent.CategoryOpenable); String[] mimeTypes = { "text/csv", "text/comma-separated-values" ,"application/pdf","image/*"}; intent.SetType("*/*"); intent.PutExtra(Intent.ExtraMimeTypes, mimeTypes); ((FormsAppCompatActivity)Forms.Context).StartActivityForResult(intent, 7007);