我试图弄清楚如何在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
我做错了什么? 感谢
答案 0 :(得分:1)
哈!这很有趣!
我相信这里发生的事情是,虽然你已经完成了一切正确的流程和许可,但你忘记了一件小事......
Launcher需要启动您的应用。启动器没有自定义权限。
换句话说,您的应用程序可以启动自己的MainActivity
,因为它有权这样做。 Launcher没有权限,因此当它尝试启动android.intent.action.MAIN
活动时,如果由于缺少权限而失败。
将主要活动与受权限保护的活动分开。从主活动中启动受保护的活动,一切都顺利如丝。