انجمن سایت کلیدستان



مشکل پرمیژن در api23زمان کنونی: ۱۳۹۵/۰۹/۱۵، ۰۸:۵۴ ق.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: mahdish74
آخرین ارسال: mahdi10539
پاسخ 3
بازدید 161

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل پرمیژن در api23

مشکل پرمیژن در api23

#1
سلام دوستان عزیز من از api23 استفاده میکنم و وقتی که میخوام یه کدی بنویسم که نیاز به پرمیژن داره مثلا تماس گرفت با یه شماره بعد از نوشتن کد و نوشتن پرمیژن لازم توی فایل منیفست باز هم برنامه من به مشکل میخوره و کرش میشه ،بعد از کمی سرچ تو اینترنت فهمیدم که از api23 به بعد باید از ران تایم پرمیژن استفاده کنی یک مثال هم گذاشته بود ولی من چیزی نفهمیدم . لطفا منو راهنمایی کنید با تشکر
پاسخ

مشکل پرمیژن در api23

#2
نحوه دسترسی به Permission ها در api23 کمی فرق کرده و همینطور که خودتون گفتید باید از Run-time Permission  استفاده کنید

برای استفاده از Run-Time Permission باید ابتدا یک در خواست Permission  به کاربر ارسال کنید

کد پی‌اچ‌پی:
int hasLocationPermission checkSelfPermissionManifest.permission.ACCESS_FINE_LOCATION );
int hasSMSPermission checkSelfPermissionManifest.permission.SEND_SMS );
List<
Stringpermissions = new ArrayList<String>();
if( 
hasLocationPermission != PackageManager.PERMISSION_GRANTED ) {
 
   permissions.addManifest.permission.ACCESS_FINE_LOCATION );
}
 
if( 
hasSMSPermission != PackageManager.PERMISSION_GRANTED ) {
 
   permissions.addManifest.permission.SEND_SMS );
}
 
if( !
permissions.isEmpty() ) {
 
   requestPermissionspermissions.toArray( new String[permissions.size()] ), REQUEST_CODE_SOME_FEATURES_PERMISSIONS );



در کد بالا نحوه تعریف و ارسال درخواست permission به کاربر نوشته شده.
چند تابع مهم هستند که لازمه کار آنها رو بدونید


این تابع چک میکنه که آیا این درخواست قبلا ارسال شده و پاسخ Granted  گرفته یا خیر
در صورتی که پاسخ Granted گرفته باشه دیگه درخواست ارسال نمیشه. ( یعنی به لیست Permission  های مورد نیاز برای راسال درخواست اضافه نمیشه )
یعنی در صورت دریافت پاسخ Granted از طرف کاربر مقدار True و در صورت عدم پذیرش از سمت کاربر و دریافت پاسخ Deniedمقدار False برمیگردونه
کد پی‌اچ‌پی:
checkSelfPermission 
کد پی‌اچ‌پی:
checkSelfPermissionManifest.permission.ACCESS_FINE_LOCATION 

این تابع لیست Permission های مورد نیاز ما رو به کاربر ارسال میکنه.
کد پی‌اچ‌پی:
requestPermissions 
کد پی‌اچ‌پی:
requestPermissionspermissions.toArray( new String[permissions.size()] ), REQUEST_CODE_SOME_FEATURES_PERMISSIONS ); 


این تابع هم نتایج پاسخ کاربر به درخواست Permission های ما رو برمیگردونه که آیا کاربر پاسخ Granted به درخواست ها داده یا Denied.

کد پی‌اچ‌پی:
onRequestPermissionsResult 
کد پی‌اچ‌پی:
@Override
public void onRequestPermissionsResult(int requestCodeString[] permissionsint[] grantResults) {
 
   switch requestCode ) {
 
       case REQUEST_CODE_SOME_FEATURES_PERMISSIONS: {
 
           forint i 0permissions.lengthi++ ) {
 
               ifgrantResults[i] == PackageManager.PERMISSION_GRANTED ) {
 
                   Log.d"Permissions""Permission Granted: " permissions[i] );
 
               } else if( grantResults[i] == PackageManager.PERMISSION_DENIED ) {
 
                   Log.d"Permissions""Permission Denied: " permissions[i] );
 
               }
 
           }
 
       }
 
       break;
 
       default: {
 
           super.onRequestPermissionsResult(requestCodepermissionsgrantResults);
 
       }
 
   }

پاسخ
 سپاس شده توسط دیب دمینی

مشکل پرمیژن در api23

#3
این هم لیست Permission  هایی که نیاز به مجوز کاربر دارن یا به اصطلاح Dangerous Permission گفته میشه

مابقی Permission  ها نیاز به درخواست به صورت Run-Time ندارن و به اصطلاح Non-Dangerous Permission گفته میشه

کد پی‌اچ‌پی:
CALENDAR READ_CALENDARWRITE_CALENDAR
CAMERA 
CAMERA
CONTACTS 
READ_CONTACTSWRITE_CONTACTSGET_ACCOUNTS
LOCATION 
ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION
MICROPHONE 
RECORD_AUDIO
PHONE 
READ_PHONE_STATECALL_PHONEREAD_CALL_LOGWRITE_CALL_LOGADD_VOICEMAILUSE_SIPPROCESS_OUTGOING_CALLS
SENSORS 
BODY_SENSORS    
SMS     
SEND_SMSRECEIVE_SMSREAD_SMSRECEIVE_WAP_PUSHRECEIVE_MMS
STORAGE 
READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE 
پاسخ
 سپاس شده توسط دیب دمینی


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)