在android事件中映射API和权限

时间:2017-04-14 06:18:41

标签: android intel-edison android-things

Android Things仅支持有限数量的API,例如Cast,Drive和Location API。我正在尝试使用一个API,我想在API方法和它所需的权限之间进行映射。我不确定执行此类任务的最佳方法是什么。我正在使用英特尔Edison主板。基本上,我需要做这样的事情:

======方法=============必需的Android权限=============

===== getLocation()====> ===== android.permission.ACCESS_FINE_LOCATION

===== getBeaconState()===> ===== android.permission.ACCESS_FINE_LOCATION

另外,我需要看看如果缺少所需的权限会发生什么?我只想找到关于如何完成这些任务的想法。

4 个答案:

答案 0 :(得分:1)

我不确定你想要实现什么,如果它是文档或代码中的东西,但是fwiw AndroidThings对权限的行为不同,所以你不必在你的代码库中做任何事情。

  

不支持在运行时请求权限,因为不保证嵌入式设备具有接受运行时对话框的UI。在应用程序的清单文件中声明所需的权限。应用程序清单中声明的​​所有正常和危险权限都将在安装时授予。

这是来自Android Things文档https://developer.android.com/things/sdk/index.html

正如你所看到的那样

  

在应用程序清单中声明的​​所有正常和危险权限都将在安装时授予。

因此,如果您使用需要ACCESS_FINE_LOCATION的地图,您将在安装时被授予权限,并且不需要为“运行时权限”编写任何代码,因为它们不存在。

答案 1 :(得分:0)

尝试使用此位置运行时权限

if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) ==
                PackageManager.PERMISSION_GRANTED &&
                ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) ==
                        PackageManager.PERMISSION_GRANTED) {

         //Do your work if permission already granted

        } else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
        }

并覆盖onRequestPermissionResult

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == 1) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

             //Do your Work
            }
        }
    }

答案 2 :(得分:0)

在AndroidManifest.xml

中声明
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

在设备上安装apk,然后重启设备,它解决了我的问题。

答案 3 :(得分:-1)

使用ActivityCompat.checkSelfPermission作为检查权限。

使用ActivityCompat.requestPermissions获取请求权限。

使用接口ActivityCompat.OnRequestPermissionsResultCallback进行回调。