Я работаю над проектом, в котором я loading txt data
из памяти телефона and making a list view with that text data
. Мой проект отлично работает на android версии 9.1. Но когда я запустил этот же проект в моем телефоне с версией lollipop (5.1.1), он не загружает файл, и просмотр списка остается пустым.
LogCat:
java .io.FileNotFoundException: Загрузка / sampledata.txt: открыть не удалось: ENOENT (Нет такого файла или каталога)
Это происходит только на телефоне с леденцом и отлично работает в другой версии. Как я могу избавиться от этой проблемы?
Основная деятельность
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
//---- FOR LIST -----
ListView listView;
ArrayAdapter<String> adapter;
int count = 0;
String[] data;
BufferedReader bufferedReaderCounter;
BufferedReader bufferedReaderLoader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1000);
}
listView = findViewById(R.id.listview);
}
public void loadclick(View view) {
filesearch();
}
private void filesearch(){
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/*");
startActivityForResult(intent, 42);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 42 && resultCode == Activity.RESULT_OK) {
if (data != null) {
Uri uri = data.getData();
String path = uri.getPath();
path = path.substring(path.indexOf(":") + 1);
Toast.makeText(this, " " + path, Toast.LENGTH_SHORT).show();
loaddatafromfile(path);
}
}
}
private void loaddatafromfile(String path){
File file = new File(path);
try {
file.mkdirs();
} catch (Exception e) {
e.printStackTrace();
}
try {
bufferedReaderCounter = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
//*** EXEPTION COMMING FROM HERE ****
bufferedReaderLoader = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
while (bufferedReaderCounter.readLine() != null){
count++;
}
}catch (Exception e){
}
data = new String[count];
try {
for (int i = 0; i<count; i++){
data[i] = bufferedReaderLoader.readLine();
}
}catch (Exception e){
}
adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == 1000){
if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this,"Granted", Toast.LENGTH_SHORT).show();
}
}
}