Итак, все эти новые разрешения на управление андроидами меня запутали. Мое приложение в настоящее время компилирует и настраивает версию 23, что означает, что я должен использовать разрешения во время выполнения. Мое приложение в основном использует API камеры, которая требует разрешения камеры, поэтому я добавил разрешения во время выполнения перед открытием камеры как таковой:путают о разрешениях на выполнение андроидов
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED)
{//ask permissions for camera
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
CameraPermissions);
}
else
{//permissions attained now you can open the camera
camera=Camera.open(getCid());
camera.setPreviewCallback(this);
initPreview(width, height);
startPreview();
startTimer();
}
Я также проверить, когда я останавливаю камеру:
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) {
camera.setPreviewCallback(null);
camera.release();
faceProc.release();
faceProc = null;
camera = null;
inPreview = false;
cameraConfigured = false;
}
разрешения запрос обрабатывается как таковой:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case CameraPermissions: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
StartUpCam();
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("How is this app going to work if you rejected the camera permission.... DUHHHH!!")
.setTitle("Rejected");
builder.setPositiveButton("Exit App", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//close application
closeApp();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
return;
}
}
}
Таким образом, когда запрос дается это вызывает StartUpCam, который затем пытается открыть камеру, если разрешения дается. Итак, вот мои вопросы, если я добавлю это разрешение на проверку времени выполнения, как это влияет на устройства Android ниже 6.0? Таким образом, телефон с версией 5.0.1 также получит приглашение предоставить разрешения камеры? Если я использую разрешения во время выполнения, мне нужно удалить разрешения камеры в файле манифеста? В настоящее время я сохраняю разрешения камеры в манифесте вместе с разрешениями времени выполнения, которые я не знаю, если это правильно или нет. Что делать, если я опустил цель и скомпилировал sdk на 22 вместо 23, будут ли Android-устройства выше 6.0 не смогут загружать мое приложение ??? Если я опускаю его до версии 22, то я избегаю все это головная боль ...
Вы можете проверить класс, который я создал, и использовать его в Fragments. Github.com/mptrista/PermissionHelper. Это фрагменты и в случае запроса единого разрешения. – toshkinl