Android M权限与Parse推送通知

8

我还有点困惑于新的运行时权限模型。以下哪些Parse推送通知(GCM)所需的权限需要运行时权限?

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.WAKE_LOCK" />

<uses-permission android:name="android.permission.VIBRATE" />

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

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

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

 <permission android:protectionLevel="signature"       android:name="com.parse.starter.permission.C2D_MESSAGE" />

<uses-permission android:name="com.parse.starter.permission.C2D_MESSAGE" />

在6.0及以上的版本中,您不需要请求GET_ACCOUNTS权限来使解析推送正常工作。它在清单文件中声明,以支持Android 4.04及更低版本。在6.0及以上版本中,该权限已被声明,但不需要“授予”。 - jiawen
3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
5
在你上面列出的权限中,GET_ACCOUNTS需要运行时检查,因为它的保护级别是危险的。 但问题是,虽然自7.5版Play服务开始,GCM不再需要GET_ACCOUNTS权限就可以工作,但如果您使用Parse推送通知,则仍然需要该权限。 看起来,为了使Parse提供对整个Android设备范围的完全兼容性(即非基于GCM的设备,如Kindle Fire,其中不支持GCM并且必须退回到他们自己的持久套接字实现和当然4.0.3及以下版本的设备),Parse仍需要此权限和其他一些权限。 来自Parse的一位人员提到:

我们要求请求它,即在AndroidManifest.xml中,但不要求授予它。

这个问题正在讨论中,您可能想看看这些话题:https://github.com/ParsePlatform/Parse-SDK-Android/issues/129 https://parse.com/questions/android-use-only-gcm-dont-require-additional-permissions

1

GET_ACCOUNTS权限属于危险权限组,因此需要在运行时检查权限,(https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous)。

其他权限为普通权限,只要在清单文件中声明即可被授予(https://developer.android.com/guide/topics/security/normal-permissions.html

如果您在运行时发现没有权限,则需要使用方法requestPermissions(Activity yourActivity, String[] permissions, int requestCode)请求它。之后,将向用户显示不可定制的对话框,请求权限。

最后,您需要覆盖Activity中的onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults)方法,检查requestCode是否与requestPermissions发送的requestCode相同,并检查目标权限是否已被授予。

还有其他情况需要考虑,比如用户第一次不授予权限,但你仍然想要询问他/她。为了知道如何处理这些情况,我建议您阅读以下内容: http://developer.android.com/intl/pt-br/training/permissions/requesting.html。它还提供请求权限和检查结果的示例代码。


那么如果权限被拒绝,您建议我该怎么做? - Taylor Courtney
我编辑了之前的回答,并提供了更好的解释。 - Caique Moreira
我理解这一切,但是我该如何为此用户禁用 Parse 推送通知? - Taylor Courtney

-3

你的参数无效。其中一些未列在正常权限下。 - Taylor Courtney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,