runtime permision در اندروید مارشمالو
به نام خدا و با سلام خدمت هموطنان گرامی!
تو این مطلب میخوام چند تا از پرمیژن ها رو در اندروید ۶ توضیح بدم که که داخل خوده برنامه شما دسترسی بخش های مختلف رو بدید!!!
این بخش ها شامل :
- location
- call
- write_ext
- READ_EXT
- CAMERA
- ACCOUNTE
- GPS_SETTING
خب اول از همه چند تا متغییر استاتیک تو برنامه اندرویدی در اندروید استدیو تعریف کنید(بالای on create ) :
1 2 3 4 5 6 7 |
static final Integer LOCATION = 0x1; static final Integer CALL = 0x2; static final Integer WRITE_EXST = 0x3; static final Integer READ_EXST = 0x4; static final Integer CAMERA = 0x5; static final Integer ACCOUNTS = 0x6; static final Integer GPS_SETTINGS = 0x7; |
تو مرحله بعد بیایین این تابع askforpermision رو قبل on create خودتون تعریف کنید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
private void askForPermission(String permission, Integer requestCode) { if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permission)) { //This is called if user has denied the permission before //In this case I am just asking the permission again ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode); } else { ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode); } } else { Toast.makeText(this, "" + permission + " is already granted.", Toast.LENGTH_SHORT).show(); } } |
حالا تو هر جای کدتون مانند زیر تابع askforpermision رو فراخوانی کنید تو برنامتون به صورت runtime تو اندروید ۶ ازتون دسترسی میخواد !!
1 2 3 4 5 6 |
askForPermission(Manifest.permission.ACCESS_FINE_LOCATION,LOCATION); askForPermission(Manifest.permission.CALL_PHONE,CALL); askForPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,WRITE_EXST); askForPermission(Manifest.permission.READ_EXTERNAL_STORAGE,READ_EXST); askForPermission(Manifest.permission.CAMERA,CAMERA); askForPermission(Manifest.permission.GET_ACCOUNTS,ACCOUNTS); |
اینم پرمیژن هایی که باید تو Manifest کپی کنید :
1 2 3 4 5 6 7 8 9 10 |
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> |
اینجاهم مجموعه ای پرمیژن هارو میزارم که تو manifest باید اضافه کنید،شاید بدردتون بخوره!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
تماس = "android.permission.CALL_PHONE"; تغییر وضعیت گوشی = "android.permission.MODIFY_PHONE_STATE"; تماس با شماره خاص = "android.permission.CALL_PRIVILEGED"; خواندن وضعیت گوشی = "android.permission.READ_PHONE_STATE"; خواندن گزارشات تماس = "android.permission.READ_CALL_LOG"; خواندن مخاطبین = "android.permission.READ_CONTACTS"; نوشتن مخاطبین = "android.permission.WRITE_CONTACTS"; موقعیت = "android.permission-group.LOCATION"; شبکه = "android.permission-group.NETWORK"; راه اندازی مجدد = "android.permission.REBOOT"; دریافت تکمیل شدن بودت = "android.permission.RECEIVE_BOOT_COMPLETED"; اینترنت = "android.permission.INTERNET"; نوشتن اس ام اس = "android.permission.WRITE_SMS"; پخش کردن اس ام اس = "android.permission.BROADCAST_SMS"; پیام ها = "android.permission-group.MESSAGES"; تماس های تلفن = "android.permission-group.PHONE_CALLS"; حافظه = "android.permission-group.STORAGE"; خاموش کردن گوشی = "android.permission.DEVICE_POWER"; دسترسی به موقعیت = "android.permission.ACCESS_COARSE_LOCATION"; دسترسی به وضعیت شبکه = "android.permission.ACCESS_NETWORK_STATE"; دسترسی به وضعیت وای فای = "android.permission.ACCESS_WIFI_STATE"; مدیریت اکانت = "android.permission.ACCOUNT_MANAGER"; اضافه کردن ایمیل صوتی = "com.android.voicemail.permission.ADD_VOICEMAIL"; تایید هویت اکانت ها = "android.permission.AUTHENTICATE_ACCOUNTS"; وضعیت باتری = "android.permission.BATTERY_STATS"; بلوتوث = "android.permission.BLUETOOTH"; ادمین بلوتوث = "android.permission.BLUETOOTH_ADMIN"; شکستن = "android.permission.BRICK"; دوربین = "android.permission.CAMERA"; تغییر وضعیت شبکه = "android.permission.CHANGE_NETWORK_STATE"; تغییر وضعیت وای فای = "android.permission.CHANGE_WIFI_STATE"; پاک کردن کش برنامه = "android.permission.CLEAR_APP_CACHE"; پاک کردن دیتای کاربر در برنامه = "android.permission.CLEAR_APP_USER_DATA"; حذف پکیج ها = "android.permission.DELETE_PACKAGES"; باز کردن استاتوس بار = "android.permission.EXPAND_STATUS_BAR"; تست فاکتوری = "android.permission.FACTORY_TEST"; فلاش دوربین گوشی = "android.permission.FLASHLIGHT"; دریافت اکانت ها = "android.permission.GET_ACCOUNTS"; دریافت اندازه پکیج = "android.permission.GET_PACKAGE_SIZE"; تست سخت افزار = "android.permission.HARDWARE_TEST"; نصب پکیج = "android.permission.INSTALL_PACKAGES"; مدیریت اکانت ها = "android.permission.MANAGE_ACCOUNTS"; ان اف سی = "android.permission.NFC"; خواندن تقویم = "android.permission.READ_CALENDAR"; خواندن حافظه جانبی = "android.permission.READ_EXTERNAL_STORAGE"; خواندن گزارشات = "android.permission.READ_LOGS"; خواندن پروفایل = "android.permission.READ_PROFILE"; خواندن اس ام اس = "android.permission.READ_SMS"; دریافت ام ام اس = "android.permission.RECEIVE_MMS"; دریافت اس ام اس = "android.permission.RECEIVE_SMS"; ضبط صدا = "android.permission.RECORD_AUDIO"; ریستارت پکیج = "android.permission.RESTART_PACKAGES"; فرستادن اس م اس = "android.permission.SEND_SMS"; قرار دادن آلارم = "com.android.alarm.permission.SET_ALARM"; تنظیم زمان = "android.permission.SET_TIME"; قرار دادن والپیپر = "android.permission.SET_WALLPAPER"; استاتوس بار = "android.permission.STATUS_BAR"; آپدیت وضعیت دستگاه = "android.permission.UPDATE_DEVICE_STATS"; ویبره = "android.permission.VIBRATE"; نوشتن تقویم = "android.permission.WRITE_CALENDAR"; نوشتن گزارش تماس = "android.permission.WRITE_CALL_LOG"; نوشتن پروفایل = "android.permission.WRITE_PROFILE"; نوشتن در حافظه خارجی = "android.permission.WRITE_EXTERNAL_STORAGE"; نوشتن تنظیمات = "android.permission.WRITE_SETTINGS"; اکانت ها = "android.permission-group.ACCOUNTS"; پرداخت = "android.permission-group.COST_MONEY"; کنترل سخت افزار = "android.permission-group.HARDWARE_CONTROLS"; //توضیحات ترجمه نشده PERSONAL_INFO = "android.permission-group.PERSONAL_INFO"; SYSTEM_TOOLS = "android.permission-group.SYSTEM_TOOLS"; CONTROL_LOCATION_UPDATES = "android.permission.CONTROL_LOCATION_UPDATES"; DELETE_CACHE_FILES = "android.permission.DELETE_CACHE_FILES"; WRITE_SOCIAL_STREAM = "android.permission.WRITE_SOCIAL_STREAM"; WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS"; WRITE_USER_DICTIONARY = "android.permission.WRITE_USER_DICTIONARY"; DEVELOPMENT_TOOL = "android.permission-group.DEVELOPMENT_TOOLS"; WRITE_GSERVICES = "android.permission.WRITE_GSERVICES"; WRITE_HISTORY_BOOKMARKS = "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"; WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS"; WAKE_LOCK = "android.permission.WAKE_LOCK"; WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS"; USE_CREDENTIALS = "android.permission.USE_CREDENTIALS"; USE_SIP = "android.permission.USE_SIP"; SUBSCRIBED_FEEDS_READ = "android.permission.SUBSCRIBED_FEEDS_READ"; SUBSCRIBED_FEEDS_WRITE = "android.permission.SUBSCRIBED_FEEDS_WRITE"; SYSTEM_ALERT_WINDOW = "android.permission.SYSTEM_ALERT_WINDOW"; SET_WALLPAPER_HINTS = "android.permission.SET_WALLPAPER_HINTS"; SIGNAL_PERSISTENT_PROCESSES = "android.permission.SIGNAL_PERSISTENT_PROCESSES"; SET_TIME_ZONE = "android.permission.SET_TIME_ZONE"; SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH"; SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE"; SET_DEBUG_APP = "android.permission.SET_DEBUG_APP"; SET_ORIENTATION = "android.permission.SET_ORIENTATION"; SET_POINTER_SPEED = "android.permission.SET_POINTER_SPEED"; SET_PREFERRED_APPLICATIONS = "android.permission.SET_PREFERRED_APPLICATIONS"; SET_PROCESS_LIMIT = "android.permission.SET_PROCESS_LIMIT"; SET_ACTIVITY_WATCHER = "android.permission.SET_ACTIVITY_WATCHER"; REORDER_TASKS = "android.permission.REORDER_TASKS"; RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH"; READ_SOCIAL_STREAM = "android.permission.READ_SOCIAL_STREAM"; READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS"; READ_SYNC_STATS = "android.permission.READ_SYNC_STATS"; READ_USER_DICTIONARY = "android.permission.READ_USER_DICTIONARY"; READ_FRAME_BUFFER = "android.permission.READ_FRAME_BUFFER"; READ_HISTORY_BOOKMARKS = "com.android.browser.permission.READ_HISTORY_BOOKMARKS"; READ_INPUT_STATE = "android.permission.READ_INPUT_STATE"; PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY"; PROCESS_OUTGOING_CALL = "android.permission.PROCESS_OUTGOING_CALLS"; MANAGE_APP_TOKENS = "android.permission.MANAGE_APP_TOKENS"; MASTER_CLEAR = "android.permission.MASTER_CLEAR"; MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS"; INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW"; KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES"; INJECT_EVENTS = "android.permission.INJECT_EVENTS"; INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER"; DIAGNOSTIC = "android.permission.DIAGNOSTIC"; DISABLE_KEYGUARD = "android.permission.DISABLE_KEYGUARD"; DUMP = "android.permission.DUMP"; GET_TASKS = "android.permission.GET_TASKS"; GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH"; FORCE_BACK = "android.permission.FORCE_BACK"; |
مثال :
1 |
<uses-permission android:name="android.permission.INTERNET"/> |
پرمیژن هارو تو این قسمت manifest کپی کنید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.farid.wifi_cl_s_r" > <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
موفق باشید
تا مطالب بعدی خدانگهدار