Android权限系统

对于权限的使用是很简单的,为了保证程序的安全机制,安卓采取了权限制度。比如我们想要访问网络,就需要在Android Manifest声明:
<uses-permission android:name="android.permission.INTERNER"/>

当我们想要打电话,发短信,拍照等待操作时,都会需要声明权限才能进行。


为代码添加权限检查

比如在一个活动里自定义添加一个权限:

 private static final String PERMISSION_SAY_HELLO="demo.com.permissiontest.permission.SAY_HELLO";

然后在Android Manifest里声明:

<permission android:name="demo.com.permissiontest.permission.SAY_HELLO"/>
在代码里检查权限,使用PackageManager的常量PERMISSION.GRANTED,如果我们自定义的权限不存在,就抛出一个SecurityException。当我们没有在Manifest里面声明<uses-permission的话,就会抛出异常

 public static void syaHello(Context context){

        int checkResult=context.checkCallingOrSelfPermission(PERMISSION_SAY_HELLO);
        if (checkResult!= PackageManager.PERMISSION_GRANTED){
            throw new SecurityException("需要demo.com.permissiontest.permission.SAY_HELLO权限");
        }
        System.out.println("Hello Jikexueyuan");
    }
我们在Manifest声明:

<uses-permission android:name="demo.com.permissiontest.permission.SAY_HELLO"/>

然后程序就会检查到我们的权限是存在的。


为基本组件添加权限检查

新建活动Myatv,在清单文件里声明

<span style="font-size:14px;"><permission android:name="demo.com.componetpermission.permission.Myatv"/></span>

在这个活动的声明里声明权限
 <activity android:name=".Myatv"
            android:permission="demo.com.componetpermission.permission.Myatv">
 
        </activity>

然后在MainActivity开启这个活动,我们会发现虽然没有声明<uses-permission/>但是可以成功开启这个活动,因为他们都在一个程序里

我们新建另一个项目,在这个项目里使用action在MainActivity里开启Myatv,先给Myatv声明一下action和category

 <activity android:name=".Myatv"
            android:permission="demo.com.componetpermission.permission.Myatv">
            <intent-filter>
                <action android:name="demo.com.componetpermission.intent.action.Myatv" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
然后开启这个活动

startActivity(new Intent("demo.com.componetpermission.intent.action.Myatv"));

但是会报错,因为没有在清单文件里声明Myatv的权限

现在我们声明一下Myatv的权限

<uses-permission android:name="demo.com.componetpermission.permission.Myatv"/>

就可以成功开启另一个程序的Myatv活动





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值