View Full Version : مشکل در کار با فایل ها در اندروید ۴.۴ به بالا
aria.hamed
دوشنبه 07 فروردین 1396, 21:05 عصر
سلام دوستان
چطوری میشه به فایل ها در اندروید ۴.۴ به بالا دسترسی داشته باشم و با هاشون کار کنم ؟
در اندروید ۴.۴ به پایین همه چیز به خوبی کار میکنه ولی روی اندروید 4.4 به بالا کار نمی کنه ؟
لطفا راهنمایی کنید
باتشکر
JYasProgramer
سه شنبه 08 فروردین 1396, 20:32 عصر
سلام چه اروری میده
aria.hamed
چهارشنبه 09 فروردین 1396, 14:53 عصر
سلام چه اروری میده
سلام روی کد توضیح می دم
این کد کامل کلاسه
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
JYasProgramer
چهارشنبه 09 فروردین 1396, 16:14 عصر
اگه وقتی در اندروید 6 اجرا میکنی یا با ورژن 23 برنامتو کامپایل میکنی به مشکل بر میخوری باید مجوز دسترسی به اکسترنال استورج رو داینامیک بگیری
با 6 کارمیکنی یا با 23 کامپایل میکنی؟
aria.hamed
چهارشنبه 09 فروردین 1396, 19:25 عصر
سلام
با 25 کامپایل می کنم
روی گوشی با اندروید ۱۸ تست کردم درست جواب می ده, گوشی سونی بوده
روی گوشی با اندروید ۲۱ و ۲۳ تست کردم جواب نداد, گوشی به ترتیب هواوی و سامسونگ بوده
بعد منظور از داینامیک گرفتن مجوز چیه ؟ چطوریه ؟
JYasProgramer
چهارشنبه 09 فروردین 1396, 21:32 عصر
فک کنم این به دردت بخوره
http://stackoverflow.com/questions/33139754/android-6-0-marshmallow-cannot-write-to-sd-card
aria.hamed
چهارشنبه 09 فروردین 1396, 22:17 عصر
فک کنم این به دردت بخوره
http://stackoverflow.com/questions/33139754/android-6-0-marshmallow-cannot-write-to-sd-card
سلام
با راهنمایی شما مشکل حل شد ممنون:چشمک:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.