android获取GPS权限

Posted 旭日初扬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android获取GPS权限相关的知识,希望对你有一定的参考价值。

文章目录

前言

一、android获取当前位置

1.1、官方提供的方法

1.2、检查是否授权

1.3、十二个危险权限

1.4、位置权限



前言

android系统是如何获取当前位置的呢?有点好奇。


一、android获取当前位置

1.1、官方提供的方法

/*确定是否已授予您特定的权限。
参数:permission—正在检查的权限的名称。
返回:android.content.pm.PackageManager。PERMISSION_GRANTED如果你有权限,或android.content.pm.PackageManager。如果不是PERMISSION_DENIED。
参见:android.content.pm.PackageManager。checkPermission(字符串,字符串)
*/
public static int checkSelfPermission(@NonNull Context context, @NonNull String permission) 
        if (permission == null) 
            throw new IllegalArgumentException("permission is null");
        

        return context.checkPermission(permission, android.os.Process.myPid(), Process.myUid());
    

1.2、检查是否授权

   /**********************************
     * 访问权限
      PackageManager.PERMISSION_GRANTED
      权限检查结果:checkPermission返回如果权限已经被授予给给定的包。
     * ********************************/
    private void initPermissions() 
        // 确定是否已授予您特定的权限
        if (ContextCompat.checkSelfPermission(this, Manifest.permission_group.LOCATION) != PackageManager.PERMISSION_GRANTED) 

            // 获取wifi连接需要定位权限,没有获取权限
            ActivityCompat.requestPermissions((Activity) this, new String[]
                    //  通过GPS芯片接收卫星的定位信息,定位精度达10米以内
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    //  通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米
                    Manifest.permission.ACCESS_COARSE_LOCATION,
                    //  获取当前WiFi接入的状态以及WLAN热点的信息
                    Manifest.permission.ACCESS_WIFI_STATE,
            , 1);//  true 代表已经拒绝提供位置信息
        
    

1.3、十二个危险权限

//  动作识别   行为识别
        public static final String ACTIVITY_RECOGNITION = "android.permission-group.ACTIVITY_RECOGNITION";
// 日历
        public static final String CALENDAR = "android.permission-group.CALENDAR";
//  通话记录
        public static final String CALL_LOG = "android.permission-group.CALL_LOG";
//  相机
        public static final String CAMERA = "android.permission-group.CAMERA";
//  联系人
        public static final String CONTACTS = "android.permission-group.CONTACTS";
//  位置
        public static final String LOCATION = "android.permission-group.LOCATION";
//  麦克风
        public static final String MICROPHONE = "android.permission-group.MICROPHONE";
//  附近设备
        public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES";
//  电话
        public static final String PHONE = "android.permission-group.PHONE";
//  传感器
        public static final String SENSORS = "android.permission-group.SENSORS";
//  短信
        public static final String SMS = "android.permission-group.SMS";
//  存储
        public static final String STORAGE = "android.permission-group.STORAGE";

1.4、位置权限

​//  同意切换
 public static final String ACCEPT_HANDOVER = "android.permission.ACCEPT_HANDOVER";

//  访问背景位置
        public static final String ACCESS_BACKGROUND_LOCATION = "android.permission.ACCESS_BACKGROUND_LOCATION";
//
        public static final String ACCESS_BLOBS_ACROSS_USERS = "android.permission.ACCESS_BLOBS_ACROSS_USERS";

// 读取或写入登记check-in数据库属性表的权限
        public static final String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";

//   通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米
        public static final String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";

//  通过GPS芯片接收卫星的定位信息,定位精度达10米以内
        public static final String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";

//  允许程序访问额外的定位提供者指令
        public static final String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS";

//  访问媒体的位置
        public static final String ACCESS_MEDIA_LOCATION = "android.permission.ACCESS_MEDIA_LOCATION";

//  ,获取网络信息状态,如当前的网络连接是否有效
        public static final String ACCESS_NETWORK_STATE = "android.permission.ACCESS_NETWORK_STATE";

//  访问通知策略
        public static final String ACCESS_NOTIFICATION_POLICY = "android.permission.ACCESS_NOTIFICATION_POLICY";

//获取当前WiFi接入的状态以及WLAN热点的信息
        public static final String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE";

//  获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限
        public static final String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";

//  动作识别  行为识别
        public static final String ACTIVITY_RECOGNITION = "android.permission.ACTIVITY_RECOGNITION";

//   添加语音
        public static final String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL";

//  拨号
        public static final String ANSWER_PHONE_CALLS = "android.permission.ANSWER_PHONE_CALLS";

//  获取电池电量统计信息
        public static final String BATTERY_STATS = "android.permission.BATTERY_STATS";

//   绑定可访问性服务
        public static final String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";

//允许一个程序告诉appWidget服务需要访问小插件的数据库,只有非常少的应用才用到此权限
        public static final String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
 //  绑定自动填充的服务
 public static final String BIND_AUTOFILL_SERVICE = "android.permission.BIND_AUTOFILL_SERVICE";

// 绑定呼叫重定向业务
        public static final String BIND_CALL_REDIRECTION_SERVICE = "android.permission.BIND_CALL_REDIRECTION_SERVICE";

//  绑定运营商消息客户端服务
        public static final String BIND_CARRIER_MESSAGING_CLIENT_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE";

​

以上是关于android获取GPS权限的主要内容,如果未能解决你的问题,请参考以下文章

使用 gps 捕获经纬度而不会耗尽电池电量

如何使用 Cocoa 以编程方式获取当前电池电量 [重复]

android获取GPS权限

android获取GPS权限

android获取GPS权限

如何在不使用 GPS 的情况下获取 Android 设备的当前城市名称?