اذهب إلى المحتوى
  • 0

كود تفويض (permission) او السماح لتطبيقات اندرويد بالكتابة على الذاكرة (sd) الخارجية

السؤال


في الاصدارات القديمة من الاندرويد اذا كنت تريد لتطبيقك بالوصول الى الملفات في الذاكره كان يكفي ان تضع هذين السطرين في ملف androidmanifist.xml فقط:

<!-- قراءة محتويات بطاقة SD -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<!-- تعديل محتويات بطاقة SD أو حذفها -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

وعندما يتم تثبيت التطبيق يكون قد تم السماح بالقراءة والكتابة من ذاكرة الهاتف وكذلك الذاكرة الخارجية.
 ولكن في الاصدارات الجديده من اندرويد حتى وان تم تضمين السطرين السابقين فلا بد من كتابة كود يعرض رساله للمستخدم ليسمح للتطبيق بالوصول او يرفضه ، واذا سمح بالوصول هنا فانه يسمح بالقراءة والكتابة في ذاكرة الهاتف فقط اما الذاكرة الخارجية فانه فقط يسمح بالقراءة منها فقط ، اي لا بد ان يكتب المبرمج كود آخر خاص يعرض رسالة اخرى تطلب من المستخدم تفويض التطبيق للكتابة في الذاكرة الخارجيه.

السؤال :
انا عملت تطبيق يتعامل مع الملفات وعندما اقوم باستعراض ملف من الذاكرة الخارجية يتم بنجاح ولكن عندما اقوم بانشاء ملف جديد او حذف ملف لا يعمل اي شيء (لا يتم).
 وعندما بحثت في عدة مواقع في النت وجدت الكود المطلوب وهو كود طويل شي ما ولكن لا مشكلة فالمشكلة هي :
ان اجزاء من ذلك الكود مأخوذه من الكلاس ActionCompat وانا اتعامل مع الكلاس Action فهل :
اذا ردت ان اجعل تطبيقي يطلب من المستخدم اعطاءة تفويض للكتابة (permission write) على الذاكرة الخارجية (sd) .
هل احتاج الى AndroidCompat التي يرث كلاس النشاط فيها من كلاس ActivityCompat بدلا من كلاس Activity.  

تم التعديل في بواسطة Hassan Hedr
تنسيق الشيفرة
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

قبل API إصدار 23 كان يعتمد كما ذكرت فقط على ذكر الصلاحيات المطلوبة للتطبيق في Manifest وعند تثبيت التطبيق فإن كل الصلاحيات المذكورة يكون المستخدم قد وافق عليها ضمنيا.

بينما في API إصدار 23 وما بعد فقد تم تغيير تجربة المستخدم من حيث السماح للصلاحيات، حيث يتم الموافقة على الصلاحيات من داخل التطبيق وعند احتياجها فقط مع اجبار التطبيق على إظهار رسالة لكل صلاحية يطلبها التطبيق وقد يوافق المستخدم عليها وقد لا يوافق.

السبب في ضرورة حاجتك لاستخدام أصناف Compat هو أنك تستهدف API 23 وما فوق في بناء تطبيقك، ولكنك تدعم إصدارات أقدم فيجب عليك الاستعانة بتصنيفات Compat حتى يتم توفير توافقية في حال كان المستخدم على إصدار أقدم من 23

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...