Messaging: Replace permission requests with launchers
Change-Id: I0d12fd05fb0abaeb9bd64c8c77e0e776d5459e4d
This commit is contained in:
@@ -18,11 +18,13 @@
|
||||
package com.android.messaging.ui.mediapicker;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
|
||||
import com.android.messaging.R;
|
||||
import com.android.messaging.datamodel.data.MessagePartData;
|
||||
import com.android.messaging.util.OsUtil;
|
||||
@@ -34,9 +36,18 @@ class AudioMediaChooser extends MediaChooser implements
|
||||
AudioRecordView.HostInterface {
|
||||
private View mEnabledView;
|
||||
private View mMissingPermissionView;
|
||||
private final ActivityResultLauncher<String> mRequestPermissionLauncher;
|
||||
|
||||
AudioMediaChooser(final MediaPicker mediaPicker) {
|
||||
super(mediaPicker);
|
||||
mRequestPermissionLauncher = mediaPicker.registerForActivityResult(
|
||||
new ActivityResultContracts.RequestPermission(), granted -> {
|
||||
if (mEnabledView == null) {
|
||||
return;
|
||||
}
|
||||
mEnabledView.setVisibility(granted ? View.VISIBLE : View.GONE);
|
||||
mMissingPermissionView.setVisibility(granted ? View.GONE : View.VISIBLE);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,21 +126,6 @@ class AudioMediaChooser extends MediaChooser implements
|
||||
}
|
||||
|
||||
private void requestRecordAudioPermission() {
|
||||
mMediaPicker.requestPermissions(new String[] { Manifest.permission.RECORD_AUDIO },
|
||||
MediaPicker.RECORD_AUDIO_PERMISSION_REQUEST_CODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRequestPermissionsResult(
|
||||
final int requestCode, final String[] permissions, final int[] grantResults) {
|
||||
if (requestCode == MediaPicker.RECORD_AUDIO_PERMISSION_REQUEST_CODE) {
|
||||
final boolean permissionGranted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
|
||||
// onRequestPermissionsResult can sometimes get called before createView().
|
||||
if (mEnabledView == null) {
|
||||
return;
|
||||
}
|
||||
mEnabledView.setVisibility(permissionGranted ? View.VISIBLE : View.GONE);
|
||||
mMissingPermissionView.setVisibility(permissionGranted ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
mRequestPermissionLauncher.launch(Manifest.permission.RECORD_AUDIO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ class CameraMediaChooser extends MediaChooser {
|
||||
private View mMissingPermissionView;
|
||||
private final ActivityResultLauncher<Uri> mPictureLauncher;
|
||||
private final ActivityResultLauncher<Uri> mVideoLauncher;
|
||||
private final ActivityResultLauncher<String> mRequestPermissionLauncher;
|
||||
private final DocumentImagePicker mDocumentImagePicker;
|
||||
private Uri mOutputUri;
|
||||
|
||||
@@ -83,6 +84,10 @@ class CameraMediaChooser extends MediaChooser {
|
||||
true /* dismissMediaPicker */);
|
||||
}
|
||||
});
|
||||
mRequestPermissionLauncher = mediaPicker.registerForActivityResult(
|
||||
new ActivityResultContracts.RequestPermission(), granted -> {
|
||||
updateForPermissionState(granted);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -152,22 +157,11 @@ class CameraMediaChooser extends MediaChooser {
|
||||
}
|
||||
|
||||
private void requestCameraPermission() {
|
||||
mMediaPicker.requestPermissions(new String[] { Manifest.permission.CAMERA },
|
||||
MediaPicker.CAMERA_PERMISSION_REQUEST_CODE);
|
||||
mRequestPermissionLauncher.launch(Manifest.permission.CAMERA);
|
||||
}
|
||||
|
||||
private void requestRecordAudioPermission() {
|
||||
mMediaPicker.requestPermissions(new String[] { Manifest.permission.RECORD_AUDIO },
|
||||
MediaPicker.RECORD_AUDIO_PERMISSION_REQUEST_CODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRequestPermissionsResult(
|
||||
final int requestCode, final String[] permissions, final int[] grantResults) {
|
||||
if (requestCode == MediaPicker.CAMERA_PERMISSION_REQUEST_CODE) {
|
||||
final boolean permissionGranted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
|
||||
updateForPermissionState(permissionGranted);
|
||||
}
|
||||
mRequestPermissionLauncher.launch(Manifest.permission.RECORD_AUDIO);
|
||||
}
|
||||
|
||||
private void updateForPermissionState(final boolean granted) {
|
||||
|
||||
Reference in New Issue
Block a user