mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-28 16:01:30 +00:00
android: runtime permission dialog for camera
This commit is contained in:
parent
f095b35663
commit
29b697df1a
1 changed files with 53 additions and 12 deletions
|
@ -4,6 +4,9 @@ import android.app.Activity;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.support.v4.app.ActivityCompat;
|
||||||
|
import android.Manifest;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
@ -13,28 +16,35 @@ import com.google.zxing.Result;
|
||||||
import com.google.zxing.BarcodeFormat;
|
import com.google.zxing.BarcodeFormat;
|
||||||
|
|
||||||
public class SimpleScannerActivity extends Activity implements ZXingScannerView.ResultHandler {
|
public class SimpleScannerActivity extends Activity implements ZXingScannerView.ResultHandler {
|
||||||
private ZXingScannerView mScannerView;
|
private static final int MY_PERMISSIONS_CAMERA = 1002;
|
||||||
final String TAG = "org.electrum.SimpleScannerActivity";
|
|
||||||
|
|
||||||
@Override
|
private ZXingScannerView mScannerView = null;
|
||||||
public void onCreate(Bundle state) {
|
final String TAG = "org.electrum.SimpleScannerActivity";
|
||||||
super.onCreate(state);
|
|
||||||
mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view
|
|
||||||
mScannerView.setFormats(Arrays.asList(BarcodeFormat.QR_CODE));
|
|
||||||
setContentView(mScannerView); // Set the scanner view as the content view
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
|
if (this.hasPermission()) {
|
||||||
mScannerView.startCamera(); // Start camera on resume
|
this.startCamera();
|
||||||
|
} else {
|
||||||
|
this.requestPermission();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
mScannerView.stopCamera(); // Stop camera on pause
|
if (null != mScannerView) {
|
||||||
|
mScannerView.stopCamera(); // Stop camera on pause
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startCamera() {
|
||||||
|
mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view
|
||||||
|
mScannerView.setFormats(Arrays.asList(BarcodeFormat.QR_CODE));
|
||||||
|
setContentView(mScannerView); // Set the scanner view as the content view
|
||||||
|
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
|
||||||
|
mScannerView.startCamera(); // Start camera on resume
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -45,4 +55,35 @@ public class SimpleScannerActivity extends Activity implements ZXingScannerView.
|
||||||
setResult(Activity.RESULT_OK, resultIntent);
|
setResult(Activity.RESULT_OK, resultIntent);
|
||||||
this.finish();
|
this.finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean hasPermission() {
|
||||||
|
return (ActivityCompat.checkSelfPermission(this,
|
||||||
|
Manifest.permission.CAMERA)
|
||||||
|
== PackageManager.PERMISSION_GRANTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void requestPermission() {
|
||||||
|
ActivityCompat.requestPermissions(this,
|
||||||
|
new String[]{Manifest.permission.CAMERA},
|
||||||
|
MY_PERMISSIONS_CAMERA);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult(int requestCode,
|
||||||
|
String permissions[], int[] grantResults) {
|
||||||
|
switch (requestCode) {
|
||||||
|
case MY_PERMISSIONS_CAMERA: {
|
||||||
|
if (grantResults.length > 0
|
||||||
|
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
// permission was granted, yay!
|
||||||
|
this.startCamera();
|
||||||
|
} else {
|
||||||
|
// permission denied
|
||||||
|
this.finish();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue