前言
所有APP都需要向手機終端請求各種各樣的權限,但是 Andorid Studio 項目默認不開啟這些權限支持。
本文記錄 Andorid APP 以獲得網絡請求權限為例的靜態/動態獲取權限的方法。
靜態授權
在 AndroidManifest.xml 文件中添加網絡請求權限聲明。
<uses-permission android:name="android.permission.INTERNET"/>
即可為 APP 添加靜態網絡請求權限。
動態授權
通過編寫 Java 代碼實現,示例:
//檢查是否獲得權限
if (ContextCompat.checkSelfPermission(ImageViewShowActivity.this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(ImageViewShowActivity.this, "未授權!", Toast.LENGTH_SHORT).show();
//沒有獲得授權,申請授權
if (ActivityCompat.shouldShowRequestPermissionRationale(ImageViewShowActivity.this, Manifest.permission.INTERNET)) {
//彈窗解釋為何需要該權限,再次請求權限
Toast.makeText(ImageViewShowActivity.this, "請授權!", Toast.LENGTH_SHORT).show();
//跳轉到應用設置界面
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
} else {
//不需要解釋為何需要授權直接請求授權
Toast.makeText(ImageViewShowActivity.this, "請聯系開發人員授權!", Toast.LENGTH_SHORT).show();
ActivityCompat.requestPermissions(ImageViewShowActivity.this, new String[]{Manifest.permission.INTERNET}, 1);
}
} else {
//獲得授權
Toast.makeText(ImageViewShowActivity.this, "已授權!", Toast.LENGTH_SHORT).show();
}
測試
以下仍以網絡請求權限為例。
未靜態授權,僅動態授權