tôi phải đối mặt với cùng một vấn đề. Có hai loại quyền trong Android:
- nguy hiểm (truy cập vào danh bạ, ghi vào bộ nhớ bên ngoài ...)
- Bình thường (quyền bình thường sẽ tự động được sự chấp thuận của Android trong khi quyền nguy hiểm cần phải được sự chấp thuận của người dùng Android.)
Dưới đây là chiến lược để có được quyền nguy hiểm trong Android 6,0
- Kiểm tra xem bạn có được phép cấp
- Nếu ứng dụng của bạn đã được cấp quyền, hãy tiếp tục và thực hiện bình thường.
- Nếu ứng dụng của bạn không có sự cho phép nào, yêu cầu người sử dụng để phê duyệt
- Nghe chính dùng trong
onRequestPermissionsResult
Đây là trường hợp của tôi: Tôi cần phải ghi vào bộ nhớ bên ngoài.
Trước tiên, tôi kiểm tra xem tôi có sự cho phép:
...
private static final int REQUEST_WRITE_STORAGE = 112;
...
boolean hasPermission = (ContextCompat.checkSelfPermission(activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
if (!hasPermission) {
ActivityCompat.requestPermissions(parentActivity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_STORAGE);
}
Sau đó kiểm tra sự chấp thuận của người sử dụng:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode)
{
case REQUEST_WRITE_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
//reload my activity with permission granted or use the features what required the permission
} else
{
Toast.makeText(parentActivity, "The app was not allowed to write to your storage. Hence, it cannot function properly. Please consider granting it this permission", Toast.LENGTH_LONG).show();
}
}
}
}
Nguồn
2015-12-26 15:19:40
Cảm ơn fixXedd. Nó hoạt động hoàn hảo. –
Không sao cả. Vui vẻ giúp đỡ. –
có, các máy tính bảng Samsung phát hành sau đó sử dụng đèn flash tích hợp – CQM