activity的permission

一般的,在应用程序中能够很方便的通过包名+activity的类名,或者action、data启动其他应用程序中的页面。如果你不希望自己应用的某些页面随便被别人调起,则可以考虑添加必要的权限。

使用系统的某些功能,我们一般都会在AndroidManifest.xml中声明所需要的权限,<uses-permission ---------/>;同样,我们也可以为自己的activity声明权限。android权限定义格式如下:

<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] />

其中icon和label是在询问用户是否允许安装时,显示的图片和名称;关键的是name,即在uses-permission时声明使用的权限;protectionLevel声明的包含级别。android定义的权限有四种级别,分别是:"normal"、"dangerous"、"signature"、"signatureOrSystem"

normal:最低级别,不需要经过用户的允许,使用uses-permission之后,直接由系统授权给请求者。其用处可能就是防止其他应用query可用activity时,找到这个activity吧;

dangerous:比normal稍微高一些,在安装时会显示出来,且需要经过用户允许

signature:需要相同的签名,而且不需要经过用户的允许;

signatureOrSystem:其实和signature类似,只不过给厂商们的应用调用系统应用开了条路

在我们需要控制权限的activity的声明中加入android:permission,照着保护等级使用即可,但想尝试几个问题

1.signature真的是只签名相同才能打开么?能否用am命令直接调起,如果再有root权限呢?

(1)先给我们的启动activity加上签名权限(该activity具有android.intent.category.LAUNCHER)。发现安装应用后,应用icon正常,显示,但是点击后,提示应用未安装;看来系统是无权启动该activity了

(2)am命令可以直接调起普通的activity,具体的可以在adb shell后输入am命令,了解基本的命令参数。am start -n 包名/完整activity类名 启动指定activity。但是随便给activity加个权限就会遇到java.lang.SecurityException: Permission Denial的错误。执行su命令,再次am start发现activity已经启动,而且不管什么级别都没有用。

2.如果两个apk都启了相同的permission名,会不会有问题?能否从一个apk调用另外一个有权限的呢?

(1)首先两个应用能同时安装上,只要包名不相同

(2)其次权限声明之间不会相互冲突,应该还是依赖与应用的包名的。

参考:http://www.arainfo.cn/?p=217

时间: 2024-08-04 22:27:22

activity的permission的相关文章

Android:调用其他程序中的activity和Permission Denial: starting Intent 错误解决办法

今天想调试多个task中栈的情况,在测试程序中调用另一个程序的activity, 代码片段如下: [java] view plaincopy btnStartX=(Button)findViewById(R.id.btnStartX); btnStartX.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stu

android Application Component研究之Activity(一)

http://blog.csdn.net/windskier/article/details/7096521 终于下定决心写写ActivityManagerService的源码分析的文章了,ActivityManagerService 业务的整个逻辑关系被各种复杂的数据结构包裹着,因此对ActivityManagerService 的分析主要就是对各种数据结构的分析,明白了这些数据结构,理解ActivityManagerService的业务内容就水到渠成了. AMS提供了一个ArrayList

转载——Android permission 访问权限大全

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: Android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table in the checkin database, to change values

解决某些Android Permission denied

最近遇到一个问题,总是在模拟器重报Permission denied错误,于是我直接在手机上测试,发现没有错误,于是很郁闷,反复在AndroidManifest中加入权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&g

Android Permission 访问权限大全(转)

程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问”properties”表在 checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get upload

清单文件 权限 permission

<uses-permission android:name="android.permission.INTERNET" /> 权限表格: 访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500

Android Permission denied 错误 ( 附Android权限大全 )

Android Permission denied 错误(附Android权限大全) java.net.SocketException: Permission denied (maybe missing INTERNET permission) 这是一个经典错误, Socket不能对外连接,错误不会被报出,调试的时候,能看到Exception, 这个Exception会有非常多变体. Android默认不同意訪问网络,所以,在AndroidManifest.xml中,须要进行例如以下配置: <u

permission 文档 翻译 运行时权限

文档位置:API24/guide/topics/security/permissions.html System Permissions 系统权限 Android is a privilege-separated operating system, in which each application runs with a distinct system identity (Linux user ID and group ID). Parts of the system are also sep

Android权限设置android.permission完整列表

程序执行需要读取到安全敏感项必需在Androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties”表在checkin数据库中,改值可以修改上传( Allows read/write access to the “properties” table in the checkin database, to change values that get uploade