Android app debug apk不要求在某些设备上拥有权限

时间:2016-07-21 17:52:43

标签: android user-permissions

在某些设备上,应用会在sidloading时正确询问权限。在其他人(Android 6.0)上,它根本不会在侧载时询问权限。权限列在manifest.xml(下面)中,适用于某些设备(Android 5.0)。在其他设备(Android 4.0,6.0.1)上,它会询问权限,但似乎并未包含所有权限。下面的弹出窗口是单击发送短信按钮时会发生什么的示例。

我只进行了有限的测试,问题似乎有点不同,具体取决于设备运行的android版本。话虽如此,它可能源于不同的东西,我不会知道。

有谁知道为什么会这样?

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

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="Catalize"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".LoginActivity"
        android:label="Catalize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.default_searchable"
            android:value="Contacts" />
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>
    <activity android:name=".Contacts" />

    <activity android:name=".Account"
        android:theme="@style/SuperCoolAppBarActivity"/>
        <meta-data android:name = "android.support.PARENT_ACTIVITY"
            android:value= ".Contacts"/>

    <activity android:name=".ReportBug">
        <meta-data android:name = "android.support.PARENT_ACTIVITY"
            android:value=".Contacts"/>
    </activity>
</application></manifest>

(IMAGE) When a button that should send a text message is clicked, this pops up instead of executing the action of the button

1 个答案:

答案 0 :(得分:0)

根据文件:

如果设备运行的是Android 6.0或更高版本,并且您的应用的目标SDK为23或更高:应用必须列出清单中的权限,并且必须在应用运行时请求其所需的每个危险权限。用户可以授予或拒绝每个权限,即使用户拒绝权限请求,应用程序也可以继续以有限的功能运行。 这就是为什么你在清单文件中声明了权限的原因,你仍然需要在运行时请求它们。

作为一种解决方法,您可以设置minSdkVersion&lt; 23,但也正如文件所说:

注意:从Android 6.0(API级别23)开始,用户可以随时撤消任何应用的权限,即使该应用针对较低的API级别也是如此。无论您的应用针对什么API级别,您都应该测试您的应用,以验证它在缺少所需权限时是否正常运行。 此外,根据权限最佳实践,您应该针对这两种权限模型进行测试,以提供更好的用户体验。