آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ایجاد نشدن دایرکتوری ( فولدر ) در گوشی موبایل

Pr0gramm3r  9 سال پیش  9 سال پیش
0 0

سلام دوستان , من سعی کردم با کد زیر یک فولدر بسازم :

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/xFolder/");
        if(!file.exists()){
            file.mkdirs();
        }

که روی جنی موشن به درستی کار میکنه , اما وقتی رو گوشی تست کردم متاسفانه کار نکرد (‌تنها فرق گوشی اینه که درگاه sd card نداره )

یک کد دیباگ رو نت پیدا کردم به این صورت

 Log.d("DEBUG_LOG", ">> Let's debug why this directory isn't being created: ");
        Log.d("DEBUG_LOG", "Is it working?: " + file.mkdirs());
        Log.d("DEBUG_LOG", "Does it exist?: " + file.exists());
        Log.d("DEBUG_LOG", "What is the full URI?: " + file.toURI());
        Log.d("DEBUG_LOG", "--");
        Log.d("DEBUG_LOG", "Can we write to this file?: " + file.canWrite());
        if (!file.canWrite()) {
            Log.d("DEBUG_LOG", ">> We can't write! Do we have WRITE_EXTERNAL_STORAGE permission?");
            if (getBaseContext().checkCallingOrSelfPermission("android.permission.WRITE_EXTERNAL_STORAGE") == PackageManager.PERMISSION_DENIED) {
                Log.d("DEBUG_LOG", ">> We don't have permission to write - please add it.");
            } else {
                Log.d("DEBUG_LOG", "We do have permission - the problem lies elsewhere.");
            }
        }
        Log.d("DEBUG_LOG", "Are we even allowed to read this file?: " + file.canRead());
        Log.d("DEBUG_LOG", "--");
        Log.d("DEBUG_LOG", ">> End of debugging.");

 که گفت مشکل از نداشتن پرمیشنه ( در صورتی که پرمیشن رو به صورت زیر اد کردم ( بالای تگ application )

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

به نظرتون مشکل چی میتونه باشه ؟

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
کاشی زاده  9 سال پیش
0 0

از این پرمیشن استفاده کنید :

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

اگر جواب نداد از این دستور :

 File myDir =newFile(getCacheDir(),"folderName");
myDir.mkdir();
0 0
ممنون بابت پاسخ , ولی انگار مشکل از اندروید ۶ هست , تو این ورژن باید شخص بره تو ستینگ و این پرمیشن رو برای من آزاد کنه , تو اپ های دیگه یک دیالوگ باز میشد و اجازه فعال کردن پرمیشن رو میگرفت , اما تو اپ من اینجوری نمیشه ( انگار کد میخواد که من کدشو ندارم ) (9 سال پیش)
0 0
سلام منم همین مشکلو داشتم و آخرش مجبور شدم TargetSdk رو از 23 به 22 تغییر بدم چون گوگل توی نسخه 23 این پرمیشین های اندروید 6 رو جدا کرده به نظرم خیلی راحت تره که تو Gradle بری targetsdk رو رو 22 بذاری . (9 سال پیش)
پاسخ به سوال 
atf  9 سال پیش
0 0

ابتدا مجوز زیر رو در مانیفست اضافه کنید

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

 سپس داخل کلاسی که قبل از ساخت دایرکتوری هست کد های زیر را قرار دهید

 

  private void permissionsResult() {

        int hasWriteExternalStoragePermission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);

        List<String> permissions = new ArrayList<String>();

        if (hasWriteExternalStoragePermission != PackageManager.PERMISSION_GRANTED) {
            permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
        }
        if (!permissions.isEmpty()) {
            requestPermissions(permissions.toArray(new String[permissions.size()]), REQUEST_CODE_SOME_FEATURES_PERMISSIONS);
        }
    }missions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}

داخل onCreate

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    permissionsResult();
}

موفق باشید

 


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .