zoukankan      html  css  js  c++  java
  • Android 权限

    在开发Android应用的时候,我们常需要在AndroidManifest.xml 中添加一些权限。才能完成对应的功能。如调用电话簿,让手机震动等等。

    那么什么是权限呢?

      其实权限一种应用程序级的安全机制,他可以限制对应用程序组件的访问。权限可以组织对应用程序的恶意破坏,来限制对敏感信息,硬件资源或者外部通信信道的过度使用。总之就是让你的应用程序更加安全,合理。

    在AndroidManifest.xml我们常常使用两种标签来添加权限。“<permission/>”和“<uses-permission/>”这两个权限标签有什么区别么?

    permission 

    <permission/>标签:添加自定义权限,防止其他应用程序随意访问你的数据或者代码接口等。如果想访问你的应用程序的接口或者数据等,就必须在他的代码中使用<uses-permission/>来添加你自己定义的权限。才可以方位你的应用程序。

    简单说就是告诉其他程序,必须有你自定义权限,才可以访问你的应用程序的接口或者数据等;

    用途:例如你的应用对外提供了数据或者接口等,但你并不想让所有应用程序访问,这时候你就可以使用<permission/>来指定权限啦。其他应用必须含有你自定义的权限,才可以访问你的程序。

    代码:

    <permission 

    android:description="@stirng/my_permission" android:icon="drawable resource" android:label="我自定义权限" android:name="权限的名字string类型的值" android:permissionGroup="权限所属的分组string类型的值" android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"]

    />

    android:name :属性是必须的,其他的可选,未写的系统会指定默认值

    android:description :权限的详细描述,比lable长,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果,这个值必须从resource中读取。

    例如这里是:@stirng/my_permission

    android:label:对权限的简短描述,显示给用户看的,值可是一个string数据,例如这里的“我自定义权限”。

    android:name :权限的名字,这个值必须是唯一的,否则会造成权限冲突。最好使用“包名”+“权限名”或者其他有意义的组合,其他app想要访问你的应用程序需要添加这个名字的权限。

    android:permissionGroup: 权限所属权限组的名称

    android:protectionLevel:权限的级别,分为4个级别:

    (1)normal:低风险权限,在安装的时候,系统会自动授予权限给app,不会提示用户。

    (2)dangerous:对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户

    (3)signature:签名权限,只针对使用同一个证书签名的app开放

    (4)signatureOrSystem :引用该权限的app需要有和系统同样的签名才能授予的权限,一般不推荐使用。

    如果想调用上面应用程序里的数据代码接口等。就需要在自己的AndroidManifest.xml中使用uses-permission添加上面定义的权限:

    uses-permission 


    <uses-permission/>标签:给应用程序添加权限的时候使用。如你访问手机的震动器,NFC等功能。就需要使用这个标签来添加权限。或者你想访问其他应用程序的时候,你就要使用这个标签来添加对方自定义的权限支持。

    例如让手机震动权限:

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

    android:name 权限名字

    关于组件使用权限:

    Activity:添加一个权限来限制其他应app来启动此Activity。

    BroadcastReceiver:控制哪些app可以向你的接收器发送消息。

    intent:筛选哪些BroadcastReceiver可以接收Broadcast Intent。

    Service:限制其他app启动或者绑定此Service。

    content provider:限制其他app对content provider的读取,写入操作的权限

    Activity:

    <activity android:name=".MyAcitivity"
    
    android:lable="@string/app_name"
    
    android:permission="com.test.my_device"/>

    Service:

    <Service android:name=".MyService" android:permission="com.test.my_device"/>

    Receiver:

    <receiver android:name=".MyReceiver" android:permission="com.test.my_device">
    
    <intent-filter>
    
    <action android:name="com.test.my_device"/>
    
    </intent-filter>
    
    </receiver

    Provider

    可以通过设置 writepermission 和 readpermission可以增加细粒度更高的 读 写 权限控制

    <provider android:name=".MyProvider"
    android:authorities="com.test.myprovider"
    android:writePermission="com.test.wirte_dervice"
    android:readPermission="com.test.read_dervice""/>
  • 相关阅读:
    random,time,os
    内置函数
    迭代器,生成器,开放封闭原则,列表推导式
    函数的有用信息
    装饰器
    动态参数,作用域,闭包
    初始函数def
    python之文件操作
    “SLR”指人造卫星激光测距,“VLBI”指甚长基线干涉测量。
    解压软件使用方法
  • 原文地址:https://www.cnblogs.com/ywtk/p/3884807.html
Copyright © 2011-2022 走看看