Android 許可權調研續集
阿新 • • 發佈:2018-12-12
前言
晚上騎車回去的,想到了行者GPS開關的判定,遂想對位置許可權做補充,續寫一下位置許可權的調研。
目標
申請位置許可權的時候獲取一下GPS開關是否開啟,以應對要求精準定位的場景,在之前的demo上做擴充套件。
實現
因為要處理位置開關,所以,我們不得不封裝一個BaseActivity,當然也完全可以將之前的許可權申請方法寫在BaseActivity裡面,如果需要許可權回執之後做相關操作,在相關Activity複寫父類的回撥方法就行。 工具類新增檢測方法:
/** * 檢測GPS是否開啟 */ public static void showGPSContacts(final BaseActivity activity) { LocationManager lm = (LocationManager) activity.getSystemService(activity.LOCATION_SERVICE); if (!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { showNormalDialog(activity, "檢測到你未開通GPS,我們需要精準位置,希望您能夠開啟", "去開啟", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); activity.startActivityForResult(intent, PRIVATE_CODE); } }); }else { activity.doNextPermissionRequest(); } }
在BaseActivity處理回執邏輯:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case PermissionUtils.PRIVATE_CODE: doNextPermissionRequest(); break; } } /** * GPS申請回來回撥 */ protected void doNextPermissionRequest() { }
然後當我們申請的許可權裡面需要開通GPS的時候,就在相關的Activity裡Override doNextPermissionRequest方法,並申請相關的方法,我這裡沒有關注是否必須開啟GPS,可以做相關的判斷,回來之後在判斷一次。