在android中定义自己的权限

时间:2015-07-16 16:49:32

标签: android permissions

我正在尝试自己的Android应用程序许可。

对于这个我的android清单文件看起来像这样。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hp.happybirthday" >

    <permission
        android:name="com.example.hp.happybirthday.PERM"
        android:description="@string/pdesc"
        android:label="@string/CAREFUL"        
      />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:permission="com.example.hp.happybirthday.PERM">

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我面临的问题是我想拥有与此应用程序相关的自己的权限,因此我在应用程序标记下添加了如下所示的以​​下行,以便只有那些活动可以访问此应用程序所拥有的我明确的许可。

android:permission="com.example.hp.happybirthday.PERM"

但问题是,当我尝试运行我的应用程序时,我已声明其清单文件的应用程序,它显示错误应用程序未安装

但是当我删除上面提到的行时,它可以工作,但是任何活动都可以访问我不想要的这个应用程序。

2 个答案:

答案 0 :(得分:1)

  

当我尝试运行我的应用时,我已声明其清单文件的应用,它显示错误应用未安装

这是因为主屏幕是一个应用程序,主屏幕不保留您的自定义权限。因此,主屏幕无法启动启动器活动。

  

然后任何活动都可以访问我不想要的这个应用程序

首先,自定义权限do not work all that well

其次,权限通常以比“此应用程序”更精细的粒度应用。您只需保护那些需要安全性的组件,并保留公共其他组件,例如启动器活动。

答案 1 :(得分:0)

您似乎已经定义了权限,并将其设置为必需...但您实际上并未将其授予您自己的应用。添加uses-permission tag