zoukankan      html  css  js  c++  java
  • AndroidManifest.xml文件详解(uses-permission)

    语法(SYNTAX):

    <uses-permissionandroid:name="string"/>

    被包含于(CONTAINED IN):

    <manifest>

    说明(DESCRIPTION):

    这个属性用于给应用程序授予正确的操作的所必须的权限。这些权限是在应用程序安装时被授予的,而不是在运行时授予的。

    有关更多的权限信息,请看《AndroidManifest.xml文件详解(三)》文档中“权限”介绍(http://blog.csdn.net/fireofstar/article/details/7543067)和《Android的安全性和权限》(http://blog.csdn.net/fireofstar/article/details/7536803)。在android.Manifest.permission类中能够找到由基础平台定义的一个权限列表(http://developer.android.com/reference/android/Manifest.permission.html)。

    属性(ATTRIBUTES):

    android:name

    这个属性用于定义权限的 名称。它能够是由该应用程序用<permission>元素定义的一个权限,也可以是由另外一个应用程序所定义的权限,还可以是有系统定义的 标准的权限,如:android:permission.CAMERA或android:permission.READ_CONTACTS等。就像例子 中所显示的那样,权限名通常要用包名做为前缀,以保证其唯一性。

    被引入的版本(INTRODUCED IN):

    API Level 1

    应用程序自定义 <permission>

    天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。

    Permission App: used to define a new permission
    这个作为定义权限的App,我称之为Permission App.
    Client App: used to access the specified activity of Permission App
    这个作为访问上述自定义权限的App,我称之为Client App

    先看如何写Permission App

    第一步

    Permission App很简单,它的任务就是定一个Permission,使用< permission>标签即可,我们假设内容如下:

    <permission

    android:name="custom.permission.STARTACTIVITY"
    android:description="@string/permission_dcr"
    android:protectionLevel=signatureOrSystem
    android:label="label">
    </permission>


    第二步

    然后在定一个Activity,这个Activity很简单就是展示下一行字,如”Hello from Custiom Permission Activity!”这里就不详述。

    第三步

    最重要的地方:我们需要为这个Activity指明访问权限,权限即为我们刚申请的权限,这个需要同样需要在AndroidManifest.xml文件中标识,如下:

    复制代码 代码如下:

    <activity
            android:name="com.example.custompermission.MainActivity"
            android:label="@string/app_name"
            android:permission="custom.permission.STARTACTIVITY"> 
    </activity>


    这个Activity于是就被打上了必须使用” custom.permission.STARTACTIVITY”权限才能访问的印记。

    接着写Client App

    至于如何写Client App,那就so so so … easy了,只需两步:

    第一步

    在AndroidManifest.xml文件中首先申请权限,如下:

    代码如下:

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


    第二步

    访问Permission App表明需要该权限的Activity,代码如下:

    Intent in = new Intent(); 

    in.setClassName("com.example.custompermission", "com.example.custompermission.MainActivity"); 
    startActivity(in);

    大功告成

    我们可以测试下效果,首先安装Permission App,然后接着安装Client App,结果如下:

    点击之后

    另外我曾经在Android Permission权限机制引子提到过Protection Level问题,这边我同样测试下这个Protection Level,下面结果中Y表示可以正常访问,N则表示不可以访问。

    需要注意的是,使用自定义Permission的activity如果设置了

    <activity
            android:name="com.example.custompermission.MainActivity"
            android:label="@string/app_name" android:permission="custom.permission.STARTACTIVITY"> 
    <intent-filter> 
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter>

    那就不能从Launcher中启动该App,因为只有你的Launcher必须使用了uses-permission去请求获取custom.permission.STARTACTIVITY权限,事实上你的Launcher是不具备已经请求自定义权限的。

    Launcher会报:Application is not installed on your phone. 的错误.

  • 相关阅读:
    JS(react)里面Json、String、Map、Object之间的转换
    react里面的几个内容
    object.assign的理解
    buffers与cached的区别
    vncserver错误
    Ubuntu可视化jupyter notebook
    ubuntu可视化桌面安装问题
    素数序列的生成及其应用 Version 2.2
    demo14-修改标签里面的属性
    demo13-修改元素的内容
  • 原文地址:https://www.cnblogs.com/zhangxia/p/4958159.html
Copyright © 2011-2022 走看看