Код результата 0 для намерения камеры

Код:-

  Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);                                   
        try{
               imageUri = Uri.fromFile(File.createTempFile("image", ".jpg"));
           }catch (Exception ex){
               ex.printStackTrace();
          }

   intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageUri);
    startActivityForResult(intent, REQUEST_CAMERA);

Я использую все разрешения, связанные с этим в файле манифеста Android ... что вышеупомянутое намерение работает нормально в MOT G3 Turbo и многих других устройствах, но в случае только Nexus 5, resultCode приходит 0 .. почему?

 Saurabh Vardani16 июн. 2016 г., 13:18
@CommonsWare ... Вот почему я использовал этот сэр ... на самом деле моя цельSDKVersion 22 ... :)
 CommonsWare16 июн. 2016 г., 13:03
«Тем не менее я использовал Uri для выполнения моего требования» - вы никогда не сможете поднять свойtargetSdkVersion выше 23
 Saurabh Vardani15 июн. 2016 г., 14:46
@CommonsWare ... Большое вам спасибо, сэр ... Я работаю над этим с вашим добрым руководством .. :)
 Saurabh Vardani16 июн. 2016 г., 08:50
@ CommonsWare, сэр ... как вы сказали, Android N начинает блокировать файл: значения Uri. Тем не менее, я использовал Uri для выполнения моего требования. Пожалуйста, посмотрите на мой ответ и, если возможно, проведите меня дальше.
 CommonsWare15 июн. 2016 г., 14:32
Там нет требований дляFile.createTempFile() вернуть путь к файлу, который доступен для записи во всем мире. Я ожидаю, что этот код не работает на многих устройствах.
 CommonsWare15 июн. 2016 г., 14:39
Это образец приложения использует файлы на внешнем хранилище. Тем не менее, это собирается начать терпеть неудачу как метод, какAndroid N начинает банитьfile: Uri ценности. Это образец приложения такой же, как первый, но используетFileProvider, чтобы позволить стороннему приложению камеры сохранять изображение непосредственно во внутреннюю память моего приложения.
 Saurabh Vardani15 июн. 2016 г., 14:35
Итак, сэр ... плз, плз, плз ...., помогите мне сделать оптимальное кодирование для этого ... сэр, я ваш большой поклонник ... @ CommonsWare

Ответы на вопрос(1)

Решение Вопроса

внеся следующие изменения ...

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
destination = Environment.getExternalStorageDirectory().getPath() + "/image.jpg";
outputUri= Uri.fromFile(new File(destination));
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP) {
  intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
} else {
  List<ResolveInfo> resInfoList = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
  for (ResolveInfo resolveInfo : resInfoList) {
      String packageName = resolveInfo.activityInfo.packageName;
      grantUriPermission(packageName, outputUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
  }
}         

startActivityForResult(intent, REQUEST_CAMERA); 
 user202804 июл. 2017 г., 13:10
@ Эй Saurabh Я использую ваше решение, но все еще получаю код результата 0 в случае Nexus (6.0.1), но он работает в Moto Power E3 (версия 6.0)
 Noorul20 сент. 2018 г., 07:12
получил какое-либо решение для этого, я использую Nexus 6P, использовал этот код, но все еще получаю ту же проблему

Ваш ответ на вопрос