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""/>
  • 相关阅读:
    Path Sum II
    Convert Sorted Array to Binary Search Tree
    Construct Binary Tree from Inorder and Postorder Traversal
    Construct Binary Tree from Preorder and Inorder Traversal
    Maximum Depth of Binary Tree
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Same Tree
    Validate Binary Search Tree
    Binary Tree Inorder Traversal
  • 原文地址:https://www.cnblogs.com/ywtk/p/3884807.html
Copyright © 2011-2022 走看看