首页 > 解决方案 > 登录前处理“允许相机访问设备的位置”

问题描述

我正在开发一个使用手机相机拍照的 Android 应用程序。首次在模拟器上安装和启动相机时,需要以下权限:

应用截图

这对应用程序有点破坏性。我已经在清单上设置了其他权限:

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />

在登录前的主要活动中:

private boolean checkPermissions() {
        if ( ContextCompat.checkSelfPermission( getApplicationContext(),
                Manifest.permission.CAMERA ) != PackageManager.PERMISSION_GRANTED ||
            ContextCompat.checkSelfPermission( getApplicationContext(),
                Manifest.permission.WRITE_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED ||
            ContextCompat.checkSelfPermission( getApplicationContext(),
                Manifest.permission.READ_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED ) {

            return false;
        }
        return true;
    }

    private void requestPermission() {
        ActivityCompat.requestPermissions( this,
                new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE },
                PERMISSION_REQUEST_CODE );
    }

在允许用户登录之前,有没有办法让请求“允许相机访问此设备的位置”以及我的其他权限?

我还尝试请求获得良好位置的许可:

private boolean checkPermissions() {
        if ( ContextCompat.checkSelfPermission( getApplicationContext(),
                Manifest.permission.CAMERA ) != PackageManager.PERMISSION_GRANTED ||
            ContextCompat.checkSelfPermission( getApplicationContext(),
                Manifest.permission.WRITE_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED ||
            ContextCompat.checkSelfPermission( getApplicationContext(),
                Manifest.permission.READ_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED ||
            ContextCompat.checkSelfPermission( getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED) {

            return false;
        }
        return true;
    }

    private void requestPermission() {
        ActivityCompat.requestPermissions( this,
                new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION },
                PERMISSION_REQUEST_CODE );
    }

这事先授予了我的应用程序而不是相机的权限,但这并不能真正解决我的问题。任何建议表示赞赏。

标签: android

解决方案


抱歉回复晚了,但我自己对此有点困惑:

我认为这实际上不是您的应用程序请求许可,而是安卓相机应用程序请求许可,所以没有太多可做的。如果您要在干净的模拟器上启动相机应用程序,您会得到相同的结果。

希望您的应用程序用户在安装您的应用程序之前已经使用过相机,这应该不是问题。:)


推荐阅读