بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

هر کار میکنم دایرکتوری جدید ایجاد نمیشه چرا؟ api target 23

مدیریت گفتگو
سعید 10 سال پیش
آخرین تغییر: 9 سال پیش

سلام.

هر کار میکنم دایرکتوری جدید ایجاد نمیشه چرا؟

 File folder = new File(Environment.getExternalStorageDirectory() + "/mashin");
            boolean success = true;
            if (!folder.exists()) {
                Log.i("Log","no exist");
                success = folder.mkdir();
            }
            if (success) {
               Log.i("Log","sucsess");
            } else {
                Log.i("Log","Noooooo");
            }

نظرات

کاشی زاده 10 سال پیش
سلام ، خطایی نمیده ؟ پیام Success چاپ میشه ؟ اگر از جنی موشن استفاده میکنید به مسیر صحیح محل ذخیره سازی رفته اید ؟ این مسیر با Emulator اندروید متفاوت است .
سعید 10 سال پیش
سلام.نه متاسفانه.تو امولیتور اندروید استدیو اینجوریه.اندروید 6 هم استفاده میشه. از این استفاده میشه. public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();

پاسخ‌ها 3

سعید 10 سال پیش

سلام.نه متاسفانه.تو امولیتور اندروید استدیو اینجوریه.اندروید 6 هم استفاده میشه. از این استفاده میشه.

اینجوری استفاده میشن.اندروید 6 پرمیشن دیگه هم میخواد؟

 public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
    public static final String DIR_APP = DIR_SDCARD + "/mashin";
    public static final String DIR_TEMP = DIR_APP + "/temp";
    public static final String DIR_FINAL = DIR_APP + "/final";

new File(DIR_APP).mkdirs(); new File(DIR_TEMP).mkdirs(); new File(DIR_FINAL).mkdirs();


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

 

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

نظرات

کاشی زاده 10 سال پیش
در اندروید 6 برای دسترسی به حافظه پرمیشن به صورت لحظه ای گرفته میشه . در این رابطه دوستان داخل انجمن سوالات و راه کار هایی را مطرح کرده اند .
hashemy978 10 سال پیش
سلام آقای کاشی زاده چیزی پیدا نکردیم اگه ممکن هست رو بزارید.
fandroid 10 سال پیش
منم دقیقا به همین مشکل برخوردم راه هایی ک تو انجمن بود رفتم به جواب نرسیدم :/
fandroid 10 سال پیش
دوستان روی امولاتور فقط اینجوریه اخه رو گوشیم که اندروید 5 هست کار میکنه :| در ضمن نسخه ایکلیپس نورحسینی هست لطفا یکی کمک کنه :|
amirhossein1376 10 سال پیش
البته یه سری لایبرری هم هست که تو github سرچ کنید پیدا میشن
fandroid 10 سال پیش
خب به نظرم این چیزی نیست که بخوام از لایبرری استفاده کنم :| و دنبال استفاده از لایبرری هم نیستم
amirhossein1376 10 سال پیش
لایبرری کوچیک برای مدیریت پرمیشن ها نه لایبرری های بزرگ لایبرری میتونه 1 کلاس هم باشه:)
QUQU 10 سال پیش
امکانش هست که Target Api/Sdk رو بیاریم پایین تا استفاده نکنیم از Android 6 ؟ اگه آره لطفا بگین چجوری .چون منم همین مشکل رو دارم ترجیح میدم این همه دردسر نکشم .
fandroid 10 سال پیش
برای این کار کافیه روی پروژه راست کلیک کنی بری به Properties از اونجا هم داخل تب Android میتونی تغییراتی رو اعمال کنی
fandroid 10 سال پیش
در ضمن دوست من اگه به همچین مشکلی خوردی احتمال زیاد مشکل از امولاتور هست من با امولاتورا دیگه جواب گرفتم همچنین با وصل کردن گوشی ولی امولاتور ایکلیپس (ورژن نورحسینی) مشکل داشت ااین لینک هم یک امولاتور رو معرفی کرده خودمم تازه میخوام برم سر وقتش :) لینک
silent scream 10 سال پیش
دوست عزیز شما رو گوشی جواب گرفتی چون اندروید 5 داره در اندروید 6 به بعد روش گرفتن پرمیشن تغییر کرده، پس مطمئن باشین که رو گوشی ای که اندروید 6 داره هم برنامه کرش خواهد کرد
silent scream 10 سال پیش
باید پرمیشن نوشتن در کارت حافظه به صورت ران تایم از کاربر گرفته بشه
silent scream 10 سال پیش

گرفتن پرمیشن نوشتن در کارت حافظه در اندروید 6 به صورت رانتایم :

int REQUEST_WRITE_EXTERNAL_STORAGE=1;
////...
        File storageDir = null;
        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
            //RUNTIME PERMISSION Android M
            if(PackageManager.PERMISSION_GRANTED==ActivityCompat.checkSelfPermission(context,Manifest.permission.WRITE_EXTERNAL_STORAGE)){
                storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "myPhoto");
            }else{
                requestPermission(context);
            }   

        }
        return storageDir;
////...
        private static void requestPermission(final Context context){
        if(ActivityCompat.shouldShowRequestPermissionRationale((Activity)context,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            // Provide an additional rationale to the user if the permission was not granted
            // and the user would benefit from additional context for the use of the permission.
            // For example if the user has previously denied the permission.

            new AlertDialog.Builder(context)
                    .setMessage(context.getResources().getString(R.string.permission_storage))
                    .setPositiveButton(R.string.tamam, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    ActivityCompat.requestPermissions((Activity) context,
                            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                            REQUEST_WRITE_EXTERNAL_STORAGE);
                }
            }).show();

        }else {
            // permission has not been granted yet. Request it directly.
            ActivityCompat.requestPermissions((Activity)context,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    REQUEST_WRITE_EXTERNAL_STORAGE);
        }
    }

///...

    @Override
    public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
        switch (requestCode) {
            case UtilityPhotoController.REQUEST_WRITE_EXTERNAL_STORAGE: {
                if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(context,
                            getResources().getString(R.string.permission_storage_success),
                            Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(context,
                            getResources().getString(R.string.permission_storage_failure),
                            Toast.LENGTH_SHORT).show();
                    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
                }
                return;
            }
        }
    }

نظرات

silent scream 10 سال پیش
این یک مثال هست که باید به نا به نیاز خود تون تغییر ش بدید. اگر نیاز به توضیح بیشتری دارید بگیید تا توضیح بدم
silent scream 9 سال پیش

عجبا! سوال میپرسید وقتی جواب میدیم هم اسپم می کنید!!!! کجای پاسخ من اسپم بود؟ تقصیر خودمه که هر وقت کسی سوال پرسید بی هیچ چشم داشتی جواب دادم

نظرات


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