android - 获取 W/Activity : Can request only one set of permissions at a time

标签 android android-camera android-permissions android-gps

我制作了一个需要摄像头和 GPS 请求的应用程序,但是当我执行时,我多次收到此警告,每次警告的间隔不到 1 秒。

W/Activity: Can reqeust only one set of permissions at a time)

有人能告诉我为什么吗?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    mStatusCamera = intent.getStringExtra("camera");
    mScannerView = new ZXingScannerView(this) {

        @Override
        protected IViewFinder createViewFinderView(Context context) {
            return new CustomZXingScannerView(context);
        }

    };
    List<BarcodeFormat> formats = new ArrayList<>();
    mListaPassageiros = new ArrayList<>();
    formats.add(BarcodeFormat.QR_CODE);
    setContentView(mScannerView);
    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.M) {
        if (!checkPermission()) {
            requestPermission();
        } else {
            executarDepoisDaPermissao();
        }
    }
}
private boolean checkPermission() {
    return (ContextCompat.checkSelfPermission(getApplicationContext(), CAMERA) == PackageManager.PERMISSION_GRANTED
    && ContextCompat.checkSelfPermission(getApplicationContext(), ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
    && ContextCompat.checkSelfPermission(getApplicationContext(), ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED);
}

public void executarDepoisDaPermissao() {
    final BancoController crud = new BancoController(getBaseContext());
    mConectado = isNetworkAvailable();
}

按要求添加了 RequestPermissio。

 private void requestPermission() {
    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.M) {
        if (!checkPermission()) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA,
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.ACCESS_COARSE_LOCATION}, ASK_MULTIPLE_PERMISSION_REQUEST_CODE);
        }
    }

}

我可以这样使用吗?

最佳答案

所以,我在这里看不到您的 requestPermission() 方法,但是您不应该同时发送多个权限请求。

您应该使用所有权限发出一个请求。

Kotlin :

val permissionsCode = 42
val permissions = arrayOf(Manifest.permission.CAMERA, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)
if (!hasPermissions(this, permissions)) {
    ActivityCompat.requestPermissions(this, permissions, permissionsCode)
}

Java:

int permissionsCode = 42; 
String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};

if (!hasPermissions(this, permissions)) {
    ActivityCompat.requestPermissions(this, permissions, permissionsCode);
}

关于android - 获取 W/Activity : Can request only one set of permissions at a time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42035244/

相关文章:

java - 为什么Android中volley找不到ImageLoader

java - 使用 MediaStore Intent 自动拍照

android - 无法在 checkSelfPermission 方法中解析符号 'CAMERA'

android - GrantPermissionCallable : Permission: android. permission.SET_TIME 不能被授予

Android - 带有自定义 ExpandableListAdapter 的 ExpandableListView,子行内带有删除按钮

android - 应用程序内订阅 - 应用程序的库存查询是否有限制?

android - Google 登录仅在(某些)小米设备上失败

android - 调用 Camera.takePicture Android 后禁用相机快照

android - 像 AirDroid 一样在后台拍照

java - 如何让应用程序每次运行时都请求位置权限?