导航:首页 > 操作系统 > android获取位置权限

android获取位置权限

发布时间:2022-12-25 12:29:46

1. android动态申请权限

1、在Android 6.0之后,APP获取手机的权限不再仅仅只是在清单文件中声明就行了,它将手机的权限分为了两类:正常权限和危险权限:

2、动态申请权限涉及到的方法:

3、例子:申请获取用户位置信息(危险权限)

4、权限清单:

2. android 获取经纬度要哪些权限

在Android应用程序中,可以使用LocationManager来获取移动设备所在的地理位置信息。看如下实例:新建android应用程序TestLocation。
1、activity_main.xml布局文件

[html] view plain print?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<TextView
android:id="@+id/positionView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

</LinearLayout>

3. Android动态获取权限

在Android6.0以后很多权限都不能静态获取了,需要动态获取权限,都2021年了,应该没有版本还低于6.0吧,所以动态获取权限基本上是一个安卓程序员必须要掌握的本领了。下面就具体来看一下怎么做吧。
准备工作:新建一个空白的activity

只有添加了静态权限之后才能动态获取权限,这里以常见的四个权限为例:

下面附上权限列表:
Android各种权限列表

4. 一个简单的Android权限获取的jar包

使用方法:

            将jar包导入到Android工程的libs目录下:

       新建一个Activity在onCreate中构建需要校验的权限:

               方法:RpConfig 是用来构建需要校验的权限的参数以及传入当前的activity。

                参数构建完成后开始调用权限申请的方法:

            使用上面的方法传入构建的参数rpConfig,后面的方法是权限获取的回调方法:

            ToNext:表示当前权限已经获取成功可以进行下一步操作,比如执行某个需要权限的方法或者是跳转到另外一个activity。

            Failed:方法表示权限获取失败,在返回的object中包含了位获取的权限有哪些。

            下面是最后一步:

                在当前调用权限的activity中加入一下回调方法:

            

    这个是权限获取情况回调的方法,必须加入不然没有权限的回调。

【分享  】提取码:xeyu

5. android获取定位权限有哪些

手机内置GPS功能不存在使用权限问题。只要手机上有内置GPS,且处在工作状态,任何有需求的软件都可以自由调用它的信号。 楼主的手机以前能定位升级后不能定位了,可能的原因很多。建议安装GPS TEST(网上搜索可得)测试一下,弄清楚现在的状况,究竟是搜不到星,还是搜到星定不了位。把可能性的范围缩小一下,就容易有针对性的对症下药解决问题了 --三星的可定位到本人位置谈不上是授权,实际上就是个类似于使用开关,如果说它是授权,那么其他导航软件也都有,不过几乎都默认定位到自己位置,只是三星(好像搜狗也是)把它列出来让使用者再设定一下,实际上是可有可无。也就是说,凡是没有这个设置选项的,都是默认定位到自己位置的,而且,该选项只是指定打开地图时的默认位置,对GPS功能无影响

6. android中的权限各起什么作用

描述不清楚啊,这是所有的权限
---------------------
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限
获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米
获取精确位置 android.permission.ACCESS_FINE_LOCATION,通过GPS芯片接收卫星的定位信息,定位精度达10米以内
访问定位额外命令 android.permission.ACCESS_LOCATION_EXTRA_COMMANDS,允许程序访问额外的定位提供者指令
获取模拟定位信息 android.permission.ACCESS_MOCK_LOCATION,获取模拟定位信息,一般用于帮助开发者调试应用
获取网络状态 android.permission.ACCESS_NETWORK_STATE,获取网络信息状态,如当前的网络连接是否有效
访问Surface Flinger android.permission.ACCESS_SURFACE_FLINGER,Android平台上底层的图形显示支持,一般用于游戏或照相机预览界面和底层模式的屏幕截图
获取WiFi状态 android.permission.ACCESS_WIFI_STATE,获取当前WiFi接入的状态以及WLAN热点的信息
账户管理 android.permission.ACCOUNT_MANAGER,获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限
验证账户 android.permission.AUTHENTICATE_ACCOUNTS,允许一个程序通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息
电量统计 android.permission.BATTERY_STATS,获取电池电量统计信息
绑定小插件 android.permission.BIND_APPWIDGET,允许一个程序告诉appWidget服务需要访问小插件的数据库,只有非常少的应用才用到此权限
绑定设备管理 android.permission.BIND_DEVICE_ADMIN,请求系统管理员接收者receiver,只有系统才能使用
绑定输入法 android.permission.BIND_INPUT_METHOD ,请求InputMethodService服务,只有系统才能使用
绑定RemoteView android.permission.BIND_REMOTEVIEWS,必须通过RemoteViewsService服务来请求,只有系统才能用
绑定壁纸 android.permission.BIND_WALLPAPER,必须通过WallpaperService服务来请求,只有系统才能用
使用蓝牙 android.permission.BLUETOOTH,允许程序连接配对过的蓝牙设备
蓝牙管理 android.permission.BLUETOOTH_ADMIN,允许程序进行发现和配对新的蓝牙设备
变成砖头 android.permission.BRICK,能够禁用手机,非常危险,顾名思义就是让手机变成砖头
应用删除时广播 android.permission.BROADCAST_PACKAGE_REMOVED,当一个应用在删除时触发一个广播
收到短信时广播 android.permission.BROADCAST_SMS,当收到短信时触发一个广播
连续广播 android.permission.BROADCAST_STICKY,允许一个程序收到广播后快速收到下一个广播
WAP PUSH广播 android.permission.BROADCAST_WAP_PUSH,WAP PUSH服务收到后触发一个广播
拨打电话 android.permission.CALL_PHONE,允许程序从非系统拨号器里输入电话号码
通话权限 android.permission.CALL_PRIVILEGED,允许程序拨打电话,替换系统的拨号器界面
拍照权限 android.permission.CAMERA,允许访问摄像头进行拍照
改变组件状态 android.permission.CHANGE_COMPONENT_ENABLED_STATE,改变组件是否启用状态
改变配置 android.permission.CHANGE_CONFIGURATION,允许当前应用改变配置,如定位
改变网络状态 android.permission.CHANGE_NETWORK_STATE,改变网络状态如是否能联网
改变WiFi多播状态 android.permission.CHANGE_WIFI_MULTICAST_STATE,改变WiFi多播状态
改变WiFi状态 android.permission.CHANGE_WIFI_STATE,改变WiFi状态
清除应用缓存 android.permission.CLEAR_APP_CACHE,清除应用缓存
清除用户数据 android.permission.CLEAR_APP_USER_DATA,清除应用的用户数据
底层访问权限 android.permission.CWJ_GROUP,允许CWJ账户组访问底层信息
手机优化大师扩展权限 android.permission.CELL_PHONE_MASTER_EX,手机优化大师扩展权限
控制定位更新 android.permission.CONTROL_LOCATION_UPDATES,允许获得移动网络定位信息改变
删除缓存文件 android.permission.DELETE_CACHE_FILES,允许应用删除缓存文件
删除应用 android.permission.DELETE_PACKAGES,允许程序删除应用
电源管理 android.permission.DEVICE_POWER,允许访问底层电源管理
应用诊断 android.permission.DIAGNOSTIC,允许程序到RW到诊断资源
禁用键盘锁 android.permission.DISABLE_KEYGUARD,允许程序禁用键盘锁
转存系统信息 android.permission.DUMP,允许程序获取系统mp信息从系统服务
状态栏控制 android.permission.EXPAND_STATUS_BAR,允许程序扩展或收缩状态栏
工厂测试模式 android.permission.FACTORY_TEST,允许程序运行工厂测试模式
使用闪光灯 android.permission.FLASHLIGHT,允许访问闪光灯
强制后退 android.permission.FORCE_BACK,允许程序强制使用back后退按键,无论Activity是否在顶层
访问账户Gmail列表 android.permission.GET_ACCOUNTS,访问GMail账户列表
获取应用大小 android.permission.GET_PACKAGE_SIZE,获取应用的文件大小
获取任务信息 android.permission.GET_TASKS,允许程序获取当前或最近运行的应用
允许全局搜索 android.permission.GLOBAL_SEARCH,允许程序使用全局搜索功能
硬件测试 android.permission.HARDWARE_TEST,访问硬件辅助设备,用于硬件测试
注射事件 android.permission.INJECT_EVENTS,允许访问本程序的底层事件,获取按键、轨迹球的事件流
安装定位提供 android.permission.INSTALL_LOCATION_PROVIDER,安装定位提供
安装应用程序 android.permission.INSTALL_PACKAGES,允许程序安装应用
内部系统窗口 android.permission.INTERNAL_SYSTEM_WINDOW,允许程序打开内部窗口,不对第三方应用程序开放此权限
访问网络 android.permission.INTERNET,访问网络连接,可能产生GPRS流量
结束后台进程 android.permission.KILL_BACKGROUND_PROCESSES,允许程序调用killBackgroundProcesses(String).方法结束后台进程
管理账户 android.permission.MANAGE_ACCOUNTS,允许程序管理AccountManager中的账户列表
管理程序引用 android.permission.MANAGE_APP_TOKENS,管理创建、摧毁、Z轴顺序,仅用于系统
高级权限 android.permission.MTWEAK_USER,允许mTweak用户访问高级系统权限
社区权限 android.permission.MTWEAK_FORUM,允许使用mTweak社区权限
软格式化 android.permission.MASTER_CLEAR,允许程序执行软格式化,删除系统配置信息
修改声音设置 android.permission.MODIFY_AUDIO_SETTINGS,修改声音设置信息
修改电话状态 android.permission.MODIFY_PHONE_STATE,修改电话状态,如飞行模式,但不包含替换系统拨号器界面
格式化文件系统 android.permission.MOUNT_FORMAT_FILESYSTEMS,格式化可移动文件系统,比如格式化清空SD卡
挂载文件系统 android.permission.MOUNT_UNMOUNT_FILESYSTEMS,挂载、反挂载外部文件系统
允许NFC通讯 android.permission.NFC,允许程序执行NFC近距离通讯操作,用于移动支持
永久Activity android.permission.PERSISTENT_ACTIVITY,创建一个永久的Activity,该功能标记为将来将被移除
处理拨出电话 android.permission.PROCESS_OUTGOING_CALLS,允许程序监视,修改或放弃播出电话
读取日程提醒 android.permission.READ_CALENDAR,允许程序读取用户的日程信息
读取联系人 android.permission.READ_CONTACTS,允许应用访问联系人通讯录信息
屏幕截图 android.permission.READ_FRAME_BUFFER,读取帧缓存用于屏幕截图
读取收藏夹和历史记录 com.android.browser.permission.READ_HISTORY_BOOKMARKS,读取浏览器收藏夹和历史记录
读取输入状态 android.permission.READ_INPUT_STATE,读取当前键的输入状态,仅用于系统
读取系统日志 android.permission.READ_LOGS,读取系统底层日志
读取电话状态 android.permission.READ_PHONE_STATE,访问电话状态
读取短信内容 android.permission.READ_SMS,读取短信内容
读取同步设置 android.permission.READ_SYNC_SETTINGS,读取同步设置,读取Google在线同步设置
读取同步状态 android.permission.READ_SYNC_STATS,读取同步状态,获得Google在线同步状态
重启设备 android.permission.REBOOT,允许程序重新启动设备
开机自动允许 android.permission.RECEIVE_BOOT_COMPLETED,允许程序开机自动运行
接收彩信 android.permission.RECEIVE_MMS,接收彩信
接收短信 android.permission.RECEIVE_SMS,接收短信
接收Wap Push android.permission.RECEIVE_WAP_PUSH,接收WAP PUSH信息
录音 android.permission.RECORD_AUDIO,录制声音通过手机或耳机的麦克
排序系统任务 android.permission.REORDER_TASKS,重新排序系统Z轴运行中的任务
结束系统任务 android.permission.RESTART_PACKAGES,结束任务通过restartPackage(String)方法,该方式将在外来放弃
发送短信 android.permission.SEND_SMS,发送短信
设置Activity观察其 android.permission.SET_ACTIVITY_WATCHER,设置Activity观察器一般用于monkey测试
设置闹铃提醒 com.android.alarm.permission.SET_ALARM,设置闹铃提醒
设置总是退出 android.permission.SET_ALWAYS_FINISH,设置程序在后台是否总是退出
设置动画缩放 android.permission.SET_ANIMATION_SCALE,设置全局动画缩放
设置调试程序 android.permission.SET_DEBUG_APP,设置调试程序,一般用于开发
设置屏幕方向 android.permission.SET_ORIENTATION,设置屏幕方向为横屏或标准方式显示,不用于普通应用
设置应用参数 android.permission.SET_PREFERRED_APPLICATIONS,设置应用的参数,已不再工作具体查看addPackageToPreferred(String) 介绍
设置进程限制 android.permission.SET_PROCESS_LIMIT,允许程序设置最大的进程数量的限制
设置系统时间 android.permission.SET_TIME,设置系统时间
设置系统时区 android.permission.SET_TIME_ZONE,设置系统时区
设置桌面壁纸 android.permission.SET_WALLPAPER,设置桌面壁纸
设置壁纸建议 android.permission.SET_WALLPAPER_HINTS,设置壁纸建议
发送永久进程信号 android.permission.SIGNAL_PERSISTENT_PROCESSES,发送一个永久的进程信号
状态栏控制 android.permission.STATUS_BAR,允许程序打开、关闭、禁用状态栏
访问订阅内容 android.permission.SUBSCRIBED_FEEDS_READ,访问订阅信息的数据库
写入订阅内容 android.permission.SUBSCRIBED_FEEDS_WRITE,写入或修改订阅内容的数据库
显示系统窗口 android.permission.SYSTEM_ALERT_WINDOW,显示系统窗口
更新设备状态 android.permission.UPDATE_DEVICE_STATS,更新设备状态
使用证书 android.permission.USE_CREDENTIALS,允许程序请求验证从AccountManager
使用SIP视频 android.permission.USE_SIP,允许程序使用SIP视频服务
使用振动 android.permission.VIBRATE,允许振动
唤醒锁定 android.permission.WAKE_LOCK,允许程序在手机屏幕关闭后后台进程仍然运行
写入GPRS接入点设置 android.permission.WRITE_APN_SETTINGS,写入网络GPRS接入点设置
写入日程提醒 android.permission.WRITE_CALENDAR,写入日程,但不可读取
写入联系人 android.permission.WRITE_CONTACTS,写入联系人,但不可读取
写入外部存储 android.permission.WRITE_EXTERNAL_STORAGE,允许程序写入外部存储,如SD卡上写文件
写入Google地图数据 android.permission.WRITE_GSERVICES,允许程序写入Google Map服务数据
写入收藏夹和历史记录 com.android.browser.permission.WRITE_HISTORY_BOOKMARKS,写入浏览器历史记录或收藏夹,但不可读取
读写系统敏感设置 android.permission.WRITE_SECURE_SETTINGS,允许程序读写系统安全敏感的设置项
读写系统设置 android.permission.WRITE_SETTINGS,允许读写系统设置项
编写短信 android.permission.WRITE_SMS,允许编写短信
写入在线同步设置 android.permission.WRITE_SYNC_SETTINGS,写入Google在线同步设置

7. 安卓权限控制指南

早期的 Android 系统没有现在这么多权限控制设定,管理功能也较不完善(其实是因为当时软件申请的权限也没有现在这么过分)。

在 Android 4.0 中,谷歌对权限系统进行了改进,于是再经过各大手机厂商的优化,每个国内定制系统就有了如今的权限管理功能。

权限管理,各大品牌其实差不多。

就我用过的几个品牌来讲,华为的权限管理最好,小米其次,OPPO 最差。

当然,这里的“差”是相对的,相对于原生 Android 系统来说,这些厂商的权限管理做的都很好。

(其实是因为 Google Play 的审核比较严格,上架的软件几乎都很克制)

所以,如果你要买新手机,在预算充足的情况下,选华为吧。不只是因为技术很牛,可定制性上也很好。

目前,安卓系统的权限主要分为以下几类:

这里,重点解释一下某些权限的用途。

获取 IMEI 码:很多应用都会申请这一权限, 读取手机的唯一识别码 (估计是用于用户的身份验证和判断多开)

存储:这里指的是 内置存储的读写权限 ,不包含系统 Android/data 文件夹下的应用私有文件夹,如果这些应用需要在根目录下存储数据,则必须拥有该权限。

读取位置信息: 只有在已经开启位置信息开关时,应用才能读取该信息 。这项权限不包含加速度计等传感器。

读取已安装应用列表: 允许应用读取已经安装的软件 ,一些应用中让用户选择其它应用的功能就是这样实现的。

身体传感器:允许应用使用诸如 计步器 等传感器。这可以实现计步功能。

运动数据:也可以实现计步功能,但这项权限是 依赖系统自带的计步算法 实现的,这也是有些计步软件的数据和其它软件数据不同的原因。

创建快捷方式:你在手机主屏上看到的 APP 图标就属于快捷方式,但这是系统在应用安装完成后自动创建的。这项权限允许应用 主动创建快捷方式 (比如微信小程序的图标和的“写文章”按钮)。

悬浮窗:微信视频聊天时切换到其它应用或主屏,这就是悬浮窗。但输入法不属于悬浮窗。

忽略电池优化:在 Android 6.0 以上系统中,有一种成为 Doze 模式的省电策略。在这种模式下,应用的联网将被禁止,直到下一个窗口或接收到 Google 高优先级推送(需要开发者和网络环境支持)。该权限允许应用在这种模式下连接网络。

是否授予软件相应的权限,取决于该软件的功能和你的需要。

例如,在导航软件中,获取位置信息是一项核心权限,但在效率软件中并不是。

对于所有软件,都建议启用“获取 IMEI 码”权限 ,否则会给开发者带来不便,也会影响用户体验(国内的一些软件甚至会在启动时进行检查,如该权限未开启则不能使用软件)。

建议对所有软件关闭“拨打电话”和除“存储”以外的所有操作类权限(考虑到可能会有恶意软件利用这些权限进行扣费)。

建议关闭除“获取位置信息”和“读取已安装应用列表”以外的所有读取类权限( 注意:关闭“读取短信”权限会导致部分应用无法自动填充短信验证码,但考虑到国内 ROM 对此都有一定优化,故不建议开启该权限

对于位置信息权限,我建议以下软件保持开启:

其它软件要求位置信息权限的,一律拒绝(有些软件失去此权限可能不能正常运行,视情况而定)

至于“读取已安装应用列表”权限,凡是不需要获取其它软件名称的,都可以拒绝此权限。

摄像头和录音权限比较好判断,凡是软件需要这些功能的,都应该允许,否则拒绝即可。

身体传感器和运动数据权限除计步软件外均选择拒绝。

创建快捷方式权限,目前我打开的软件只有一个:com.tencent.mm 包名,slogan 是“生活方式”,启动界面是月亮的那个国民级应用。

悬浮窗权限,一部分辅助类软件需要打开,比如手机管家和绿色守护,以及前面提到的那个国民级应用的视频悬浮窗。

至于开机自启动等关于后台省电的权限,请看下期......

8. android手机在安装需要获取地理位置的app时,改app需要用户授权吗

你的程序获取地理位置时,是需要权限的的,加上权限就Ok了,用户安装时 针对不同的系统,系统会询问 用户是否允许 该程序获取地理位置。

9. android获取各个路径权限问题

总结:获取应用程序相关的缓存路径都不需要权限,获取其他路径需要授权。

10. Android 6.0 扫描不到 Ble 设备需开启位置权限

最近总是有用户反馈说APP扫描不到设备,让我很费解了一段时间,尤其是华为和OPPO,公司还专门买了这款手机,然后测试没问题,直到一个偶然,我把手机定位给关了,才发现这个问题,Android 6.0 扫描设备需开启位置权限,用户突然一天把定位给关了,我们在扫描之前又没检测,唉,一个逻辑不严谨就会出现各种问题,现在记录一下

权限获取

<uses-permission android:name="android.permission.BLUETOOTH"/> 使用蓝牙所需要的权限

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 使用扫描和设置蓝牙的权限(申明这一个权限必须申明上面一个权限)

在Android5.0之前,是默认申请GPS硬件功能的。而在Android 5.0 之后,需要在manifest 中申明GPS硬件模块功能的使用。

<!-- Needed only if your app targets Android 5.0 (API level 21) or higher. -->

    <uses-feature android:name="android.hardware.location.gps" />

在 Android 6.0 及以上,还需要打开位置权限。如果应用没有位置权限,蓝牙扫描功能不能使用(其它蓝牙操作例如连接蓝牙设备和写入数据不受影响)

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

除了上面的设置之外,如果想设置设备只支持 BLE,可以加上下面这句话

<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

同样,如果不想添加 BLE 的支持,那么可以设置 required="false"

然后可以在运行时判断设备是否支持 BLE,

// Use this check to determine whether BLE is supported on the device. Then

    // you can selectively disable BLE-related features.

    if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {

        Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();

        finish();

    }

打开定位 (Location)

首先检查定位是否打开,可以像下面这样操作:

/**

* Location service if enable

*

* @param context

* @return location is enable if return true, otherwise disable.

*/

public static final boolean isLocationEnable(Context context) {

    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    boolean networkProvider = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

    boolean gpsProvider = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

    if (networkProvider || gpsProvider) return true;

    return false;

}

如果定位已经打开,可以搜索到 ble 设备;如果定位没有打开,则需要用户去打开,像下面这样:

private static final int REQUEST_CODE_LOCATION_SETTINGS = 2;

private void setLocationService() {

    Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

    this.startActivityForResult(locationIntent, REQUEST_CODE_LOCATION_SETTINGS);

}

进入定位设置界面,让用户自己选择是否打开定位。选择的结果获取:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_CODE_LOCATION_SETTINGS) {

        if (isLocationEnable(this)) {

            //定位已打开的处理

        } else {

            //定位依然没有打开的处理

        }

    } else super.onActivityResult(requestCode, resultCode, data);

}

阅读全文

与android获取位置权限相关的资料

热点内容
程序员生产智能创意 浏览:65
汇和银行app怎么登录 浏览:379
腾讯服务器如何上传源码 浏览:739
单片机的原理概述 浏览:508
火控pdf 浏览:267
如何复制云服务器centos环境 浏览:984
债权pdf 浏览:299
红色番字的app怎么下载 浏览:876
云服务器流程教课 浏览:702
中国农业银行app怎么没有网 浏览:997
几率表算法 浏览:902
程序员理工科 浏览:708
企业邮箱登录收件服务器地址 浏览:558
计算机思维与算法设计的重要性 浏览:664
linux刷新磁盘命令 浏览:76
我的世界如何查看服务器种子pc 浏览:284
linuxlamp编译安装 浏览:609
枚举算法ppt 浏览:184
cmd查看进程命令 浏览:956
手机内怎么删除APP 浏览:834