Откройте файл JSON, не загружая его

В своем приложении для Android я использую файлы JSON, которые загружаю в хранилище. Для этого мне нужно установить несколько разрешений.

Есть ли способ «скачивать» файлы без разрешения. Откройте их, получив ввод из файла и работайте с ним.

Проблема здесь в том, что вы обращаетесь к файлам, и для этого вам нужны разрешения READ_EXTERNAL_STORAGE. Почему вы скачиваете файлы JSON? Это ответ сервера или что-то в этом роде?

miguelarc 03.07.2018 11:15
0
1
1 212
3

Ответы 3

Поместите файл JSON в папку Assests, а затем вы можете прочитать данные из файла, используя функцию ниже:

public String loadJSONFromAsset() {
String json = null;
try {
    InputStream is = getActivity().getAssets().open("yourfilename.json");
    int size = is.available();
    byte[] buffer = new byte[size];
    is.read(buffer);
    is.close();
    json = new String(buffer, "UTF-8");
} catch (IOException ex) {
    ex.printStackTrace();
    return null;
}
return json;
}

Для получения дополнительных сведений о синтаксическом анализе данных из JSON перейдите по ссылке это.

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

miguelarc 03.07.2018 11:18

Это хорошее решение, но проблема в том, что файл JSON с сервера, поэтому я не могу его нигде хранить.

pSych0 03.07.2018 21:35

Только разрешение Интернета в вашем манифесте для загрузки файла из Интернета.

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


  new Thread() {
            @Override
            public void run() {
                super.run();
                StringBuilder sb = new StringBuilder();
                try {
                    URL url = new URL("http://yourwebpage.com/abc.json");
                    // Read all the text returned by the server
                    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                    String str;
                    while ((str = in.readLine()) != null) {
                        sb.append(str);
                    }
                    in.close();
                } catch (MalformedURLException e) {
                } catch (IOException e) {
                }

                String your_json=sb.toString();

                //process Json Here



            }
        }.start();

Начиная с Android 4.4 (уровень API 19), чтение или запись файлов в частном каталоге внешнего хранилища вашего приложения - доступ к которому осуществляется с помощью getExternalFilesDir () - не требует разрешений READ_EXTERNAL_STORAGE или WRITE_EXTERNAL_STORAGE. Поэтому, если ваше приложение поддерживает Android 4.3 (уровень API 18) и ниже, и вы хотите получить доступ только к частному каталогу внешнего хранилища, вы должны объявить, что разрешение запрашивается только в более низких версиях Android, добавив атрибут maxSdkVersion:

<manifest ...>
    <uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"
                     android:maxSdkVersion = "18" />
    ...
</manifest>

Для получения дополнительной информации обратитесь к https://developer.android.com/training/data-storage/files#PrivateFiles

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