android开发权限
1. 开发Android网络手机游戏需要打开哪些权限
开发Android网络手机游戏需要打开的权限主要包括:网络访问的权限、读取wifi状态的权限、对文件读写的权限、防止手机黑屏的权限等,如下:
java"><uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permissionandroid:name="android.permission.RESTART_PACKAGES"/>
<uses-permissionandroid:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
大部分的应用都需要联网,和读写文件,一些特殊的应用,需要有拍照、录音、地理位置、读取联系人等权限,用户需要谨慎勾选,防止泄密。
2. Android权限机制
我们知道 Android 应用程序是沙箱隔离的,每个应用都有一个只有自己具有读写权限的专用数据目录。但是如果应用要访问别人的组件或者一些设备上全局可访问的资源,这时候权限机制就能系统化地规范并强制各类应用程序的行为准则。
Android 安全性概览
在 Android 中,一个权限,本质上是一个字符串,一个可以表示执行特定操作的能力的字符串。比如说:访问 SD 卡的能力,访问通讯录的能力,启动或访问一个第三方应用中的组件的能力。 权限被授予了之后,首先会在内存和本地中有记录,这在调用系统binder服务和其他应用组件时做鉴权依据,比如调用系统binder服务时会通过Binder.getCallingUid()拿到调用者的Uid,而Uid一般都是与应用包名一一对应的,再拿这个Uid到PMS里去查这个应用对应的权限。 其次会按被授予的权限将应用分到某个组。 可以参考 https://www.jianshu.com/p/a17c8bed79d9
自定义权限的应用场景在于限制其它应用对本应用四大组件的访问。具体用法可以参考 https://www.cnblogs.com/aimqqroad-13/p/8927179.html
pm list permissions -f 命令可以详细查看 Android 所有预定义的权限。
更详细的权限信息参考 https://developer.android.com/reference/android/Manifest.permission?hl=zh-cn#WRITE_EXTERNAL_STORAGE
可以看到一个权限的信息包括:定义的包名、标签、描述、 权限组 和 保护级别 。
权限根据设备的功能或特性分为多个组。如果应用已在相同权限组中被授予另一危险权限,系统将立即授予该权限,如READ_CONTACTS和WRITE_CONTACTS。
SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS 由于其特殊性,其申请方式与其它权限都不同。
其授予流程如下:
(关于 AppOpsManager 是什么可以参考: https://segmentfault.com/a/1190000009214983 )
这里简要分析下ActivityCompat#requestPermissions的流程:
更详细的权限授予流程源码分析可以参考: https://segmentfault.com/a/1190000009214983
普通权限: 清单文件中声明即可。
危险权限: 方式一: pm grant application_package android.permission.CHANGE_CONFIGURATION 方式二:appops set application_package permission_num 0/1
appops可以授予的权限参考 android.app.AppOpsManager 中的声明
系统签名权限: 方式一:将app迁移到system/priv-app目录中。 方式二:看不懂,参考 https://blog.csdn.net/abcd_3344_abcd/article/details/50698759
android 4.4 访问sd卡需要申请权限。 您的应用在 Android 4.4 上运行时无法读取外部存储空间上的共享文件,除非您的应用具有 READ_EXTERNAL_STORAGE 权限。也就是说,没有此权限,您无法再访问 () 返回的目录中的文件。但是,如果您仅需要访问 getExternalFilesDir() 提供的您的应用特有目录,那么,您不需要 READ_EXTERNAL_STORAGE `权限。
android 6.0 运行时权限。 此版本引入了一种新的权限模式,如今,用户可直接在运行时管理应用权限。这种模式让用户能够更好地了解和控制权限,同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。 对于以 Android 6.0(API 级别 23)或更高版本为目标平台的应用,请务必在运行时检查和请求权限。要确定您的应用是否已被授予权限,请调用新增的 checkSelfPermission() 方法。要请求权限,请调用新增的 requestPermissions() 方法。即使您的应用并不以 Android 6.0(API 级别 23)为目标平台,您也应该在新权限模式下测试您的应用。 如需了解有关在您的应用中支持新权限模式的详情,请参阅 使用系统权限 。如需了解有关如何评估新模式对应用的影响的提示,请参阅 权限最佳做法 。
android 7.+ 应用间共享文件要使用FileProvider。 对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file://URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。 要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider `类。如需了解有关权限和共享文件的详细信息,请参阅 共享文件 。
android 8.+
同一权限组的权限在被授予了之后也需要显式的再申请一次。
在 Android 8.0 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用。 对于针对 Android 8.0 的应用,此行为已被纠正。系统只会授予应用明确请求的权限。然而,一旦用户为应用授予某个权限,则所有后续对该权限组中权限的请求都将被自动批准。 例如,假设某个应用在其清单中列出 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 。应用请求 READ_EXTERNAL_STORAGE ,并且用户授予了该权限。如果该应用针对的是 API 级别 24 或更低级别,系统还会同时授予 WRITE_EXTERNAL_STORAGE ,因为该权限也属于同一 STORAGE 权限组并且也在清单中注册过。如果该应用针对的是 Android 8.0,则系统此时仅会授予 READ_EXTERNAL_STORAGE ;不过,如果该应用后来又请求 WRITE_EXTERNAL_STORAGE ,则系统会立即授予该权限,而不会提示用户。
android 9
隐私权限变更。
为了增强用户隐私,Android 9 引入了若干行为变更,如限制后台应用访问设备传感器、限制通过 Wi-Fi 扫描检索到的信息,以及与通话、手机状态和 Wi-Fi 扫描相关的新权限规则和权限组。
android 10
隐私权变更。
外部存储访问权限范围限定为应用文件和媒体,在后台运行时访问设备位置信息需要权限,针对从后台启动 Activity 的限制等。
android 11
隐私权限变更。
更详细的版本变更请参考 https://developer.android.com/preview/privacy?hl=zh-cn
3. 安卓开发我想获取System权限
System权限需要先获取ROOT权限,由于 /system 和 /data都是root用户的目录,普通用户没有读写权限,需要获取root权限才可以,修改。
目前应用市场有非常多的一键ROOT工具,这里就不举例了,功能基本都是一样的,Root权限的获取方式:
1.用手机连接电脑,下载一键root工具。
2.下载成功后,打开一键ROOT软件。会出现root准备,点击下一步,正式开始root。
3.检查root条件,要是需要文件备份的话,一定要备份后。点击开始ROOT。
4.root正式开始,需要几钟左右时间,期间可能会重启数次,root就会完成。
5.root完成后,就可以随意删除手机中的垃圾应用了包括系统应用。
当你获取root权限后通过adb访问 /system/app目录:
adb shell 进入shell模式
su 切换到root用户
chmod 777/system/app修改/system/app目录的权限为 777即可
exit 退出root用户
cd/system/app即可进入/system/app目录了
获取root权限后,将apk复制到/system/app目录下即可。
4. Android开发中怎么主动请求权限
自定义属于自己的permission 或属于开发者使用的同一个签名的permission。定义一个permission 就是在menifest文件中添加一个permission标签。
<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |
"signature" | "signatureOrSystem"] />
android:description :对权限的描述,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果
android:label: 对权限的一个简短描述
android:name :权限的唯一标识,一般都是使用 报名加权限名
android:permissionGroup: 权限所属权限组的名称
android:protectionLevel: 权限的等级,
normal 是最低的等级,声明次权限的app,系统会默认授予次权限,不会提示用户
dangerous 权限对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户
signature 权限表明的操作只针对使用同一个证书签名的app开放
signatureOrSystem 与signature类似,只是增加了rom中自带的app的声明
android:name 属性是必须的,其他的可选,未写的系统会指定默认值
1、权限的声明(APP1)
<permission android:name="com.xxx.permission" />
<receiver
android:name="com.example.demo1"
android:permission="com.xxx.permission" >
<intent-filter>
<action android:name="com.test.action" />
</intent-filter>
</receiver>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:permission="com.xxx.permission" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2、权限的使用(APP2)
<uses-permission android:name="com.xxx.permission" />
5. android开发 弹出权限提示框 检查是否具有某个权限
一般你添加了权限,在第一次安装运行时就会提醒,你也可以强制,比如照相机权限检查
finalprivateintREQUEST_CODE_ASK_PERMISSIONS=123;//权限请求码
//在执行扫描二维码之前检查是否具有打开照相机的权限
try{
inthasWriteContactsPermission=context.checkSelfPermission(Manifest.permission.CAMERA);//权限检查
if(hasWriteContactsPermission!=PackageManager.PERMISSION_GRANTED){
requestPermissions(newString[]{Manifest.permission.CAMERA},
REQUEST_CODE_ASK_PERMISSIONS);
return;//没有权限,结束
}else{
//做自己的操作
}
}catch(Exceptione){
e.printStackTrace();
ToastUtil.defaultToast(getContext().getApplicationContext(),"权限异常");
}
//回调函数,无论用户是否允许都会调用执行此方法@Override
(intrequestCode,@NonNullString[]permissions,@NonNullint[]grantResults){
switch(requestCode){
caseREQUEST_CODE_ASK_PERMISSIONS:
if(grantResults[0]==PackageManager.PERMISSION_GRANTED){
//PermissionGranted用户允许权限继续执行(我这里执行的是二维码扫描,检查的是照相机权限)
Intentintent=newIntent(getActivity(),
CaptureActivity.class);
startActivityForResult(intent,REQUEST_CODE_SCAN);
}else{
//PermissionDenied拒绝
ToastUtil.defaultToast(context.getApplicationContext(),"获取权限失败,无法扫描");
}
break;
default:
super.onRequestPermissionsResult(requestCode,permissions,grantResults);
}
}
6. android 开发通知管理权限怎么获取
如果想修改这个权限大概有三种方式:
1.通过代码反射系统类实现
系统管理通知栏权限的类是:GC: AppOpsService,所有设置界面、notificationManagerService都是通过它来实现对通知栏权限的管理。但是setNode 方法会检测 UPDATE_APP_OPS_STATS 权限,这个权限是系统权限,一般应用无法取得(android 权限列表:Android App Permissions)
2. 在 Root 手机上直接修改配置文件
在 AppOpsService 的代码中可以看到它其实就是操作一个文件,把所有设置保存在里面 (Android development: disable "show notification" programmatically with root permission?),由于这个文件只有取得 root 权限的 app 才可以拿到,所以美团不具备这个可能。
3. 通过 accessibility 模拟用户点击
7. android studio 动态权限写在哪里
android studio 动态权限写在权限分为普通权限和许可权限。
许可权限分类归组,一个权限授权之后,该组下的权限均可使用。这个问题问的有点不太清楚。如果你问是敲代码的时候配置,那是在AndroidMainfest.xml里边写。
如果问的是手机里边应用配置了权限的在哪看,这个的话root过后,system/xx/packages.xml这里边是可以看见所有安装应用的信息的。中间目录忘记了,详情可以网络packages.xml了解。
主要功能:
2013年5月16日,在I/O大会上,谷歌推出新的Android开发环境——Android Studio,并对开发者控制台进行了改进,增加了五个新的功能。
Android Studio是谷歌推出了新的Android开发环境,开发者可以在编写程序的同时看到自己的应用在不同尺寸屏幕中的样子。
优化小贴士:在主体中打开你的应用,点击小贴士,会得到这样的建议:为你的应用开发平板电脑版本。
应用翻译服务:允许开发者直接在开发主体中获得专业的翻译。上传你的需求,选择翻译,其会显示翻译方和价格,并在一周内发回译本。