一、Android相冊許可權申請
1、Android中提供了一個簡單的方法來檢查和請求許可權 – checkSelfPermission() 和 requestPermissions()方法。在使用相冊和圖庫時,檢查相冊許可權是必要的。檢查相冊許可權的代碼如下:
if (ContextCompat.checkSelfPermission(this,Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[] { Manifest.permission.READ_EXTERNAL_STORAGE },
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
其中 MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE 是請求碼,開發人員可以自己定義。
2、如果用戶沒有授權,應用程序會顯示一個許可權申請窗口。
二、Android相冊下載
1、Android提供了通過getContentResolver()方法從相冊中查詢圖像的方法。獲取相冊中圖片的代碼如下:
String[] projection = { MediaStore.Images.Media._ID,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME,
MediaStore.Images.Media.DATE_TAKEN,
MediaStore.Images.Thumbnails.DATA };
Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, null, null, MediaStore.Images.Media.DATE_TAKEN+" DESC");
2、獲取到cursor對象後就可以循環遍歷查詢到的圖片。從游標中獲取ID並生成URI,就可以直接在應用程序中顯示圖像,如下所示:
long imageId = cursor.getLong(
cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
Uri imageUri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
imageId);
三、Android相冊許可權限制與解除
1、在應用程序中將用戶重定向到應用程序管理器並請求取消許可權。在 Android 6.0 稱為 Donut 的該問題中,用戶可以在設備的設置中取消應用程序的許可權。在 Android 7.0 Nougat 中,用戶可以更改已授予的許可權,但無法取消授權,只能在應用程序管理器中重新啟用許可權。
在應用程序中請求取消許可權的代碼如下:
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", getPackageName(), null));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
2、有時候用戶選擇取消授權後想再次授權,可以在代碼中非同步地請求許可權。非同步請求相冊許可權的代碼如下:
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_WRITE_EXTERNAL_STORAGE_PERMISSIONS);
四、Android網路許可權
1、使用網路通信需要在 AndroidManifest.xml 文件中添加網路許可權:
<uses-permission android:name="android.permission.INTERNET" />
2、使用HttpURLConnection實現HTTP請求。代碼示例如下:
URL url = new URL("http://www.example.com/path/to/api");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
五、Android許可權監控選取
1、Android提供了一個包含系統許可權信息的類 – PackageManager。開發人員可以使用此類獲取設備上當前應用的許可權列表,如下所示:
PackageManager packageManager = getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo("com.example.appName", PackageManager.GET_PERMISSIONS);
String[] requestedPermissions = packageInfo.requestedPermissions;
2、可以使用 ContentObserver 監聽許可權更改,並在更改時執行操作。代碼示例如下:
ContentObserver contentObserver = new ContentObserver(new Handler()) {
public void onChange(boolean selfChange) {
// perform operation
}
};
getContentResolver().registerContentObserver(Settings.System.CONTENT_URI, true, contentObserver);
原創文章,作者:LSZK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138190.html