Привет Мой поток приложений - приложение должно запрашивать разрешения на доступ к камере и хранилищу, и сразу же должно открываться камера QrScan.Когда я отлаживаю, все работает нормально, но когда я запускаю приложение, после запроса разрешения открывается пустая страница. Почему это можно объяснить?
Я использую вид сканера ZXing.
public static boolean checkAndRequestPermissions(final Activity context) {
int ExtstorePermission = ContextCompat.checkSelfPermission( context,
Manifest.permission.READ_EXTERNAL_STORAGE );
int cameraPermission = ContextCompat.checkSelfPermission( context,
Manifest.permission.CAMERA );
List <String> listPermissionsNeeded = new ArrayList <>();
if (cameraPermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add( Manifest.permission.CAMERA );
}
if (ExtstorePermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded
.add( Manifest.permission.WRITE_EXTERNAL_STORAGE );
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions( context, listPermissionsNeeded
.toArray( new String[listPermissionsNeeded.size()] ),
REQUEST_ID_MULTIPLE_PERMISSIONS );
return false;
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_ID_MULTIPLE_PERMISSIONS:
if (ContextCompat.checkSelfPermission( MainActivity.this, Manifest.permission.CAMERA ) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText( getApplicationContext(), "Requires acces to Camera", Toast.LENGTH_SHORT ).show();
// initAds();
finish();
} else if (ContextCompat.checkSelfPermission( MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText( getApplicationContext(), "Requires Storage Permissions.", Toast.LENGTH_SHORT ).show();
finish();
} else {
}
break;
}
}
Это код для разрешений.и следующий код для сканирования
private void ScanQrcode() {
zXingScannerView = new ZXingScannerView(this);
zXingScannerView.setResultHandler((ZXingScannerView.ResultHandler)context);
zXingScannerView.startCamera();
setContentView( zXingScannerView );
}
Файл манифеста
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
Открытие пустой страницы после запроса разрешений вместо сканирования камеры при запуске приложения и изменении режима телефонаозначает, что от potraite до пейзажа, то сканирование камеры открывается .. Но когда я отлаживаю, все работает нормально, нет необходимости поворачивать телефон.