3
我有一個WebView,某個頁面加載需要GeolocationPermissions權限。爲此我重寫GeolocationPermissionsShowPrompt()。好。Android M:系統權限與WebView位置權限
此外,我的應用程序針對SDK 23(Android M)與新的權限模型。所以,我需要檢查用戶是否授予權限ACCESS_FINE_LOCATION,如果沒有,則顯示詢問權限的對話框。
如何僅爲需要GeolocationPermissions的頁面顯示該對話框?
不調用回調onPermissionRequest(PermissionRequest請求)。
AndroidManifest:
的WebView回調
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, true);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
@Override
public void onPermissionRequest(PermissionRequest request) {
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
requestLocationPermission();
else {
super.onPermissionRequest(request);
}
顯示對話框允許
private void requestLocationPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)) {
new ADPDialogFragment(getActivity()) {
@Override
public String getTitre() {
return getString(R.string.mob_he_configuration_dialogue_message_titre);
}
@Override
public String getMessage() {
return getString(R.string.permission_location_rationale);
}
@Override
public void doPositiveClick() {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
}
}.show(getFragmentManager(), TAG);
} else {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
}
權限回調
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_LOCATION) {
// BEGIN_INCLUDE(permission_result)
// Received permission result for camera permission.
Log.i(TAG, "Received response for Camera permission request.");
// Check if the only required permission has been granted
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Camera permission has been granted, preview can be displayed
} else {
Toast.makeText(getActivity(), getString(R.string.permissions_not_granted), Toast.LENGTH_SHORT).show();
}
// END_INCLUDE(permission_result)
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
臨屋你的幫助!
你讓它在Android SDK中23工作?我不能,就像callback.invoke什麼都不做。 –