سلام دوستان
چطوری میشه به فایل ها در اندروید ۴.۴ به بالا دسترسی داشته باشم و با هاشون کار کنم ؟
در اندروید ۴.۴ به پایین همه چیز به خوبی کار میکنه ولی روی اندروید 4.4 به بالا کار نمی کنه ؟
لطفا راهنمایی کنید
باتشکر
Printable View
سلام دوستان
چطوری میشه به فایل ها در اندروید ۴.۴ به بالا دسترسی داشته باشم و با هاشون کار کنم ؟
در اندروید ۴.۴ به پایین همه چیز به خوبی کار میکنه ولی روی اندروید 4.4 به بالا کار نمی کنه ؟
لطفا راهنمایی کنید
باتشکر
سلام چه اروری میده
سلام روی کد توضیح می دم
این کد کامل کلاسه
http://s8.picofile.com/file/8290655676/Find.java.html
class Find {
String folder_in_prosess = null;
private ArrayList<String> list_track = new ArrayList<>();
private String media_path = "/storage";
private boolean search_in_hidden_file = false;
private ArrayList<String> block_folder = new ArrayList<>();
Find(String path, boolean search_in_hidden_file, ArrayList<String> block_folder) {
if (!path.isEmpty())
media_path = path;
if (search_in_hidden_file)
this.search_in_hidden_file = true;
if (block_folder != null) {
this.block_folder = block_folder;
}
}
private boolean block_check(File file) {
try {
if (file.isFile())
folder_in_prosess = file.getPath().substring(0, file.getPath().length() - file.getName().length());
else
folder_in_prosess = file.getPath();
} catch (Exception e) {
return false;
}
Set<String> set = new HashSet<>(block_folder);
return set.contains(folder_in_prosess);
}
private boolean checking_hidding_file(File file) {
return search_in_hidden_file || !file.isHidden();
}
ArrayList<String> findFile() {
File home = new File(media_path);
File[] listFiles = home.listFiles();
if (checking_hidding_file(home))
if (!block_check(home)) {
if (listFiles != null && listFiles.length > 0) {
for (File file : listFiles) {
if (checking_hidding_file(file))
if (!block_check(file)) {
if (file.isDirectory()) {
scanDirectory(file);
} else {
addSongToList(file);
}
}
}
}
}
// return songs list array
return list_track;
}
private void scanDirectory(File directory) {
if (directory != null) {
File[] listFiles = directory.listFiles();
if (checking_hidding_file(directory))// check hide
if (!block_check(directory)) {//check block_folder
if (listFiles != null && listFiles.length > 0) {
for (File file : listFiles) {
if (checking_hidding_file(file))
if (!block_check(file)) {
if (file.isDirectory())
scanDirectory(file);
else
addSongToList(file);
}
}
}
}
}
}
private void addSongToList(File song) {
String t = song.getPath();
if (t.length() > 5)
if (accept_file(song.getName()))
list_track.add(t);
}
private boolean accept_file(String name) {
return
name.toLowerCase().endsWith(".mp3") ||
name.toLowerCase().endsWith(".wav") ||
name.toLowerCase().endsWith(".ogg");
}
}
کلاس رو هم به صورت زیر فراخوانی می کنم
من می خوام لیست فایل های موجود در پوشه ۱ درون حافظه خارجی رو بدست بیارم
Find findMusic = new Find(Environment.getExternalStorageDirectory() + "/1", true, t1);
ArrayList<String> t = findMusic.findFile();
وقتی می خوام فایل های اون پوشه رو مرور کنم listfile کار نمی کنه و مقدار null رو بر می گردونه
File home = new File(media_path);
File[] listFiles = home.listFiles();
مجوز دسترسی به فایل رو هم در AndroidManifest.xml گذاشتم
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
اینم یه عکس از در هنگام دیباگ در اندروید ۲۳
http://s9.picofile.com/file/8290655026/a.jpg
اگه وقتی در اندروید 6 اجرا میکنی یا با ورژن 23 برنامتو کامپایل میکنی به مشکل بر میخوری باید مجوز دسترسی به اکسترنال استورج رو داینامیک بگیری
با 6 کارمیکنی یا با 23 کامپایل میکنی؟
سلام
با 25 کامپایل می کنم
روی گوشی با اندروید ۱۸ تست کردم درست جواب می ده, گوشی سونی بوده
روی گوشی با اندروید ۲۱ و ۲۳ تست کردم جواب نداد, گوشی به ترتیب هواوی و سامسونگ بوده
بعد منظور از داینامیک گرفتن مجوز چیه ؟ چطوریه ؟
فک کنم این به دردت بخوره
http://stackoverflow.com/questions/3...ite-to-sd-card