Android

时间:2016-05-29 22:14:58

标签: android permissions

我试图弄清楚如何在Android中使用自定义权限。 https://developer.android.com/guide/topics/manifest/manifest-intro.html#perms

我在这里找到了类似的问题,但没有一个答案对我有用...... 我已经使用Android studio 2.1.1

创建了简单的应用程序
package com.example.lukas.permtest;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

带清单

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

    <permission android:name="com.example.lukas.permission.ACTIVITY_PERM"
        android:label="@string/permlab_activity"
        android:description="@string/permdesc_activity"
        android:protectionLevel="normal"/>

    <uses-permission android:name="com.example.lukas.permission.ACTIVITY_PERM"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity"

            android:permission="com.example.lukas.permission.ACTIVITY_PERM">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我的索尼Xperia Z2平板电脑配备Andoid 4.4.2和Xperia Z3 +配备Android 6.0 该应用程序无法正常工作。我对两个设备都有同样的例外......

W/ActivityManager: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.lukas.permtest/.MainActivity } from ProcessRecord{44cf1178 2461:com.sonyericsson.home/u0a95} (pid=2461, uid=10095) requires com.example.lukas.permission.ACTIVITY_PERM

我做错了什么? 感谢

1 个答案:

答案 0 :(得分:1)

哈!这很有趣!

我相信这里发生的事情是,虽然你已经完成了一切正确的流程和许可,但你忘记了一件小事......

Launcher需要启动您的应用。启动器没有自定义权限。

换句话说,您的应用程序可以启动自己的MainActivity,因为它有权这样做。 Launcher没有权限,因此当它尝试启动android.intent.action.MAIN活动时,如果由于缺少权限而失败。

将主要活动与受权限保护的活动分开。从主活动中启动受保护的活动,一切都顺利如丝。