文档章节

Activity的权限控制

h
 houj
发布于 2016/01/18 13:41
字数 756
阅读 2.1K
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

Activity的权限控制


  在APK中能够通过包名+activity的类名,或者action、data启动其他应用程序中的页面。
Intent i = new Intent();
  ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.Settings");
  i.setComponent(cn);
  i.setAction("android.intent.action.MAIN");
  startActivity(i); // or startActivityForResult(i, RESULT_OK);
  如果不希望自己APP的某些页面随便被别人调用,则可以考虑添加权限控制。
  使用系统的某些功能,我们一般都会在AndroidManifest.xml中声明所需要的权限,比如:
<uses-permission android:name="android.permission.INTERNET" />
  同样,我们也能为自己的activity声明特有的权限。android权限定义格式如下:
<permission
   android:description="string资源"
   android:icon="drawable资源"
   android:label="string资源"
   android:name="string"
   android:permissionGroup="string"
   android:protectionLevel=["normal"|"dangerous"|"signature"|"signatureOrSystem"]
/>
android:description 描述这个权限所针对的操作及用户授予这个权限的后果
icon 在询问用户是否允许安装时,显示的图片
android:label 在询问用户是否允许安装时,显示的名称
android:name 权限的唯一标识,一般都是使用包名加权限名,也是在uses-permission时声明使用的权限名
android:permissionGroup 权限所属权限组的名称 
android:protectionLevel 权限的等级,可选4种等级:normal,dangerous,signature,signatureOrSystem
可选等级:
normal 最低级别,不需要经过用户的允许,使用uses-permission之后,直接由系统授权给请求者。其用处可能就是防止其他应用query可用activity时,找到这个activity吧;
dangerous 比normal稍微高一些,在安装时会显示出来,且需要经过用户允许
signature 需要相同的签名,而且不需要经过用户的允许;
signatureOrSystem 其实和signature类似,只不过给厂商们的应用调用系统应用开了条路

  在我们需要控制权限的activity的声明中加入android:permission,照着保护等级使用即可,但想尝试几个问题
  1.signature真的是只签名相同才能打开么?能否用am命令直接调起,如果再有root权限呢?
  a)先给我们的启动activity加上签名权限(该activity具有android.intent.category.LAUNCHER)。发现安装应用后,应用icon正常,显示,但是点击后,提示应用未安装;看来系统是无权启动该activity了
b)am命令可以直接调起普通的activity,具体的可以在adb shell后输入am命令,了解基本的命令参数。
am start -n 包名/完整activity类名
  启动指定activity。但是随便给activity加个权限就会遇到java.lang.SecurityException: Permission Denial的错误。执行su命令,再次am start发现activity已经启动,而且不管什么级别都没有用。
  2.如果两个apk都启了相同的permission名,会不会有问题?能否从一个apk调用另外一个有权限的呢?
  a)首先两个应用能同时安装上,只要包名不相同
  b)其次权限声明之间不会相互冲突,应该还是依赖与应用的包名的。
h
粉丝 10
博文 81
码字总数 57985
作品 0
长沙
技术主管
私信 提问
加载中
请先登录后再评论。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.6K
8
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
706
1
程序猿媛一:Android滑动翻页+区域点击事件

滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。文尾附注源码获取途径。 转载请保留原文出处“http://my.oschina.net/gluoyer...

花佟林雨月
2013/11/09
4.3K
1
Android3D应用与游戏开发框架--JQGL

JQGL 是一款针对Android设备上3D应用、游戏的开发框架。 核心功能是OpenGL-ES的使用框架,相对于大部分开发者而已,OpenGL是陌生的,没有专门研究无法进行相关的开发。 本框架针对于Android...

Jping
2013/02/21
1.6K
0
Android-PanesLibrary

Android-PanesLibrary 可以让你非常轻松的创建原生的带多个面板的平板布局的 Android 应用。包括一个滑动菜单和内容面板,在平板上菜单和多个面板一起显示。 下图是用该组件开发的一个应用:...

匿名
2013/03/28
6.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

利用Numpy中的ascontiguousarray可以是数组在内存上连续,加速计算

1. 概述 在使用Numpy的时候,有时候会遇到下面的错误: AttributeError: incompatible shape for a non-contiguous array 看报错的字面意思,好像是不连续数组的shape不兼容。 有的时候,在看...

osc_9we1w99u
30分钟前
0
0
如何管理客户的期望值?

根据客户关系管理(CRM)中的三角定律,客户满意度=客户体验-客户期望值。客户期望值与客户满意度成相对反比,因此需要引导客户期望值并维持在一个适当的水平,同时客户期望值需要与客户体验协...

cailisuper
今天
0
0
阿里研究员:软件测试中的18个难题

阿里QA导读:对于软件测试来说,怎么样才算测够了?如何评价测试的有效性?那么多测试用例,以后怎么删?在软件测试中会遇到非常多的问题,阿里研究员郑子颖分享了18个他总结出的难题以及相关...

阿里巴巴技术质量
昨天
0
0
Numpy的常用函数总结

1、np.argmax()、np.max()、np.argmin()、np.min()用法: argmax返回的是最大数的索引.argmax有一个参数axis,默认是0。看二维的情况如下: a = np.array([[1, 5, 5, 2],            ...

osc_auwur47t
32分钟前
0
0
【报告分享】2020抖音进阶-挑战赛2.0产品营销方案.pdf(附下载链接)

大家好,我是文文(微信:sscbg2020),今天给大家分享抖音营销中心出品的《2020抖音进阶-挑战赛2.0产品营销方案.pdf》,方案里面的玩法解析、案例、营销重点分析等都很清晰,对短视频及品牌...

智能推荐系统
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部