安卓上的Firebase消息传递和权限

4
我最近将Firebase消息推送添加到我的Android应用中,并注意到一些新的权限与此同时被要求,例如:android.permission.READ_PHONE_STATE,但我在文档中找不到这些权限的原因。我甚至尝试在清单文件中显式禁用它(tools:node="remove"),但消息仍然可以正常工作。这让我的应用程序变得混乱不堪,因此我希望为了我的用户的利益,只使用尽可能少的权限。
这些权限是否真的是消息推送所需的,或者是自动添加的来自库依赖项之一?我该如何判断是哪个库添加了哪个权限呢?我尝试使用manifest-merger-report.txt,但其中并没有提及READ_PHONE_STATE
谢谢!
4个回答

1
READ_PHONE_STATE 权限不是 Firebase Cloud Messaging 工作所必需的(请参阅编辑您的应用程序清单文档)。
从我所了解的情况来看,您已经对此主题进行了相当深入的挖掘(检查 manifest-merger-report.txt,添加 tools:node="remove" 以禁用它)。 您可能也看过 Commonsware 的 博客
从当前帖子的详细信息来看,很难确定 READ_PHONE_STATE 权限来自何处,但最有可能是 清单合并 的原因。请尝试仔细检查是否存在依赖项,其库的 min SDK 低于应用程序的 min SDK,在这种情况下,将添加权限,如此 答案 所述:
第二个权限READ_PHONE_STATE是由于saxrssreader库引起的。当该库的最小SDK版本低于应用程序的最小SDK版本时,权限会在构建过程中添加。我只需将库的最小SDK版本更改为与我的应用程序使用的版本号相同,权限就会消失。

1

我遇到了同样的问题,我查看了manifest-merger-report,发现READ_PHONE_STATE是被添加的,因为我正在使用的某个库的目标版本小于4。

这是报告中的确切引用:

来自[com.google.firebase:firebase-messaging:10.2.0] C:\Users\user\project\app\build\intermediates\exploded-aar\com.google.firebase\firebase-messaging\10.2.0\AndroidManifest.xml:23:18-87 android:uses-permission#android.permission.READ_PHONE_STATE 从 C:\Users\user\project\app\src\main\AndroidManifest.xml:1:1-135:12 推断出原因:org.apmem.tools.layouts 的 targetSdkVersion < 4

希望这可以帮助你。问题可能是Firebase + Permissions的重复。


0

Firebase没有添加此权限。更新您的Google Play服务到10.0.1,因为这个错误似乎已经在那个版本中得到了修复:

“此版本修复了play-services-location.aar中缺少minSdkVersion值的问题,该问题导致不必要的WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE和READ_PHONE_STATE权限被合并到应用程序清单中。”


是的,我看了那份报告,但我正在使用的是Google Play服务10.2.0。 - K.H.

-2

好的,这有点尴尬。最终,我在父级清单中自己添加了权限。感谢您的评论,基于这些评论,我成功地追踪到了问题所在。


这根本不是对你最初问题的答案,因此将其标记为已接受非常误导人。如果你自己找到了其他解决方案而没有解决问题,应该在评论中写下它,而不是接受答案,直到它解决了问题。 - Christian

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