Чтение и запись Android без запроса разрешения - Theta

Мне нужно разрешение на чтение и запись для моего плагина, я много чего пробую.

В манифесте

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

но не работает после v23 согласно другим сообщениям, поэтому я пытаюсь с requestPermission но мое приложение вылетает, и в реальном случае у меня нет интерфейса.

Я использую RICOH THETA Plug-in SDK

Я пытаюсь использовать BitmapFactory и получил эту ошибку

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/DCIM/100RICOH/R0010156.JPG (Permission denied)

Если у кого-то есть идеи, как это сделать. Спасибо.

3 ответа

Решение

Не волнуйся. Магазин подключаемых модулей THETA предоставляет все разрешения автоматически во время установки. В реальных условиях использования пользователям не нужно предоставлять разрешения вручную. Вам нужно предоставить разрешения вручную только на время разработки.

Официальный документ описывает, что

Декларация разрешений

При установке из магазина RICOH THETA, в зависимости от уровня защиты, установленного в файле манифеста, разрешение предоставляется автоматически. Во время разработки используйте приложение, которое отображает экран, такое как Vysor, и предоставьте разрешение в настройках приложения или в диалоговом окне плагина.

Сначала вы должны проверить версию Android

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
                ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED {

           // do work

        } else {

            String[] permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(permissions, 100);
            }
        }
    } else {

                      // do work
    }

Вы должны дать разрешение вручную в Android 6 и выше, используйте ссылку библиотеки Dexter https://github.com/Karumi/Dexter

Другие вопросы по тегам