android 許可權問題
今天和同事合作遇到一個問題:當targetSdkVersion = 22 時候在6.0 以上手機執行(做了許可權校驗)也正常彈出來了詢問介面 但是使用者不操作依然可以進去,使用者拒絕依然進去,然後閃退了。詢問之後說忘了 考慮使用者拒絕的情況了....好吧 !那這個坑我自己填。
首先在調取相機的時候做如下判斷:
//檢查許可權(6.0以上做許可權判斷)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkPermission())
openCamera();
else
requestCameraPermission();
} else {
// 6.0 以下
openCamera();
}
下面是我上面的方法:/*** 開啟相機 */
private void openCamera() {
// 需要實現 空方法不起作用
}
檢查許可權/**檢查許可權/
private boolean checkPermission() {
boolean isCanUse = true;
Camera mCamera = null;
try {
mCamera = Camera.open();
Camera.Parameters mParameters = mCamera.getParameters(); //針對魅族手機
mCamera.setParameters(mParameters);
} catch (Exception e) {
isCanUse = false;
}
if (mCamera != null) {
try {
mCamera.release();
} catch (Exception e) {
e.printStackTrace();
return isCanUse;
}
}
return isCanUse;
}
申請相機許可權/**申請許可權/ (好想第二次提示詢問沒用 正在研究)
private void requestCameraPermission() {
Log.i("-", "相機許可權未被授予,需要申請!");
// 相機許可權未被授予,需要申請!
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.CAMERA)) {
// 如果訪問了,但是沒有被授予許可權,則需要告訴使用者,使用此許可權的好處
Log.i("", "申請許可權說明!");
Snackbar.make(recyclerView, R.string.permission_camera_rationale,
Snackbar.LENGTH_INDEFINITE)
.setAction(R.string.ok, new View.OnClickListener() {
@Override
public void onClick(View view) {
// 這裡重新申請許可權
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CAMERA},
REQUEST_CAMERA);
}
})
.show();
} else {
// 第一次申請,就直接申請
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA},
REQUEST_CAMERA);
}
}
許可權回撥
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_CAMERA) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 已經有許可權
OkLogger.e("已經有許可權", "已經有許可權");
startActivity(new Intent(this, RecordedVideoActivity.class));
} else {
//使用者勾選了不再詢問
//提示使用者手動開啟許可權
if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
Snackbar.make(recyclerView, R.string.permissions_not_granted,
Snackbar.LENGTH_SHORT).show();
}
}
}
}
以上方法可以實現 每次詢問 但效果沒有6.0 以上 tag>23 效果好。
相關文章
- Android許可權問題整理 非常全面Android
- MySQL許可權問題MySql
- SQL Server許可權問題SQLServer
- Android許可權檢查API checkSelfPermission失效問題AndroidAPI
- moderator permission的許可權問題
- 採坑之Android手機訪問相簿許可權問題Android
- Android系統許可權和root許可權Android
- 認證/授權與許可權的問題
- Android SELinux avc dennied許可權問題解決方法AndroidLinux
- android自定義訪問許可權permissionAndroid訪問許可權
- android:各種訪問許可權PermissionAndroid訪問許可權
- Ubuntu 下 Composer 許可權問題Ubuntu
- vue許可權問題解決方案Vue
- hdfs檔案本地許可權問題
- Laravel Daily 日誌許可權問題LaravelAI
- Mysql資料庫許可權問題MySql資料庫
- ASM中磁碟組許可權問題ASM
- Win7最高許可權問題Win7
- linux檔案許可權問題Linux
- sqlserver 賦予許可權的問題SQLServer
- android許可權大全Android
- Android permission許可權Android
- Android許可權管理之RxPermission解決Android 6.0 適配問題Android
- 各位高手,問下許可權上的問題
- android動態許可權到自定義許可權框架Android框架
- Android7.0檔案訪問許可權Android訪問許可權
- Laravel 框架的日誌許可權問題Laravel框架
- Laravel 日誌檔案許可權問題Laravel
- iOS10 許可權崩潰問題iOS
- hadoop命令報錯:許可權問題Hadoop
- ubuntu下解決wireshark許可權問題Ubuntu
- public_html的許可權問題(轉)HTML
- SQL Server 2000 許可權問題SQLServer
- Android許可權管理之Permission許可權機制及使用Android
- Ubuntu共享資料夾訪問許可權問題Ubuntu訪問許可權
- android 許可權庫EasyPermissionsAndroid
- Android許可權適配Android
- Android安全—許可權模型Android模型