在某些设备上,应用会在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>
答案 0 :(得分:0)
根据文件:
如果设备运行的是Android 6.0或更高版本,并且您的应用的目标SDK为23或更高:应用必须列出清单中的权限,并且必须在应用运行时请求其所需的每个危险权限。用户可以授予或拒绝每个权限,即使用户拒绝权限请求,应用程序也可以继续以有限的功能运行。 这就是为什么你在清单文件中声明了权限的原因,你仍然需要在运行时请求它们。
作为一种解决方法,您可以设置minSdkVersion&lt; 23,但也正如文件所说:
注意:从Android 6.0(API级别23)开始,用户可以随时撤消任何应用的权限,即使该应用针对较低的API级别也是如此。无论您的应用针对什么API级别,您都应该测试您的应用,以验证它在缺少所需权限时是否正常运行。 此外,根据权限最佳实践,您应该针对这两种权限模型进行测试,以提供更好的用户体验。