Где разместить запрос на разрешение камеры?

В настоящее время вы не можете «внедрить» опыт Azure AD B2C в ваше приложение, использующее вашу стороннюю сторону.

Вместо этого вы можете внедрить или зарегистрировать свой опыт в своем приложении, а затем интегрировать с помощью Azure AD B2C с использованием API-интерфейса Azure AD для создания локальной учетной записи и политики владельца ресурса для проверки учетных данных для локальной учетной записи.

В противном случае вы можете использовать домен {tenant}.b2clogin.com , а не login.microsoftonline.com один, для вашей службы Azure AD B2C, если вы хотите удалить ссылки на Microsoft из своей регистрации и входа в систему потоков.

1
задан Dhanshri 19 January 2019 в 08:02
поделиться

4 ответа

Прежде всего, определите разрешение в файле манифеста.

В Java-файле

Вы должны запросить разрешение еще раз во время выполнения, используя checkSelfPermission. Это совершенно необходимо, как если бы вы, пользователь, не дал разрешения, он не сможет получить доступ к камере. Вы должны написать этот код и все функции, связанные с камерой, когда вы хотите, чтобы камера действительно появилась.

Например, если есть кнопка, скажем Open Camera, сначала проверьте разрешение, выдал пользователь или нет, а затем откройте камеру.

0
ответ дан Sagar Balyan 19 January 2019 в 08:02
поделиться

См. Запрос разрешения напрямую соответствует сбою приложения, если служба запрашивается, а разрешение недоступно. Я бы предпочел поместить разрешение в onResume, потому что независимо от того, что пользовательское действие становится, например, сворачивание или диалог разряда батареи появляется в верхней части экрана, нам нужно снова проверить изменения разрешения, чтобы изменения вашей активности могли происходить по каким-либо причинам. Либо камера пытается открыть после запроса сети, либо какова ситуация.

Поместите разрешение на проверку камеры в Resume.

Итак, давайте поговорим о том, как бы вы это сделали. Есть ряд восприятий. Что я предпочитаю делать, так это создавать класс Helper , который позволил бы мне узнать статус разрешения с помощью этого кода

class PermissionsHelper(activity: Activity) {
private val activity: Context

init { this.activity = activity }

fun isCameraPermissionAvailable()=ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED

}

}

[118 ] Таким образом, в методе onResume вашей деятельности проверьте, доступно ли разрешение, иначе запросите разрешение.

 override fun onResume() {
    super.onResume()
    if (!PermissionsHelper(this).isCameraPermissionAvailable()) {
        requestPermissions(arrayOf(Manifest.permission.CAMERA), CAMERA_REQUEST_CODE)
    }
}

Также обратите внимание на два момента

1) You should write permission for camera in manifeast so that app can request the permission
2) Check if the camera permission is available or not before opening the camera, if not you should again request for the permission

(то же, что и на стадии резюме)

0
ответ дан Sháilèndra Wregmi 19 January 2019 в 08:02
поделиться

Возможно, наиболее подходящим местом для получения разрешения согласно документации Android является

каждый раз, когда вы выполняете операцию, требующую этого разрешения.

Причиной такой рекомендации является то, что начиная с Android 6.0 (уровень API 23), пользователи могут в любое время отозвать разрешения у любого приложения. Таким образом, даже если приложение вчера использовало камеру, оно не может предположить, что оно все еще имеет такое разрешение сегодня.

И, следовательно, приложение должно «проверять» каждый раз для разрешения, чтобы выполнить операцию, которая требует этого разрешения.

Вы можете настроить камеру и другие операции «после», когда пользователю было предоставлено разрешение на использование камеры. Вы можете проверить статус, если разрешение предоставлено пользователем, переопределив onRequestPermissionsResult

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_CAMERA: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted, yay! Do the
                // camera-related task you need to do.
            } else {
                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request.
    }
}
0
ответ дан AADProgramming 19 January 2019 в 08:02
поделиться

Вы можете разместить разрешения в любом месте перед использованием сервиса. Технически это не имеет значения. Но запрос разрешения с помощью начального экрана с указанием причины, по которой необходимо разрешение, или запрос его непосредственно перед использованием службы удобен для пользователя.

0
ответ дан Charan M 19 January 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: