В своем приложении для Android я использую файлы JSON, которые загружаю в хранилище. Для этого мне нужно установить несколько разрешений.
Есть ли способ «скачивать» файлы без разрешения. Откройте их, получив ввод из файла и работайте с ним.
Поместите файл 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 перейдите по ссылке это.
Он пытается получить доступ к файлу из приложения, а не из ресурсов внутри проекта.
Это хорошее решение, но проблема в том, что файл JSON с сервера, поэтому я не могу его нигде хранить.
Только разрешение Интернета в вашем манифесте для загрузки файла из Интернета.
///<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
Проблема здесь в том, что вы обращаетесь к файлам, и для этого вам нужны разрешения READ_EXTERNAL_STORAGE. Почему вы скачиваете файлы JSON? Это ответ сервера или что-то в этом роде?