如果运行需要权限但没有权限的代码,Android会发生什么?

如果运行需要权限但没有权限的代码,Android会发生什么?,android,android-permissions,Android,Android Permissions,我说的是质量问题(bug),Android应用程序需要在清单中声明的权限,但未能在适当的时间向用户请求权限,并且在没有必要权限的情况下执行代码。这在旧的Android版本中是不可能的(用户批量接受所有权限),但在大多数情况下使用复制苹果的新版本时似乎是可能的 至少在测试过程中,用户可以启动后台服务并使用蓝牙,而无需谷歌弹出任何警报。这与生产中的应用程序不同吗 应用程序是否因异常而崩溃 代码执行了吗 该应用是否在审查中被拒绝?(总是吗?) 应用程序是否从商店中退市 这取决于Android的版本吗

我说的是质量问题(bug),Android应用程序需要在清单中声明的权限,但未能在适当的时间向用户请求权限,并且在没有必要权限的情况下执行代码。这在旧的Android版本中是不可能的(用户批量接受所有权限),但在大多数情况下使用复制苹果的新版本时似乎是可能的

至少在测试过程中,用户可以启动后台服务并使用蓝牙,而无需谷歌弹出任何警报。这与生产中的应用程序不同吗

  • 应用程序是否因异常而崩溃
  • 代码执行了吗
  • 该应用是否在审查中被拒绝?(总是吗?)
  • 应用程序是否从商店中退市
  • 这取决于Android的版本吗

  • 我处理的是一个古老的应用程序,它有蓝牙发现代码来查找和连接专用硬件,很少通过内容触发的cordova插件使用。有可能激活的旧altbeacon代码甚至可能需要访问后台位置()。要使这段死代码达到质量需要一些时间。肯定比我们这周有更多的时间。

    应用程序是否会因异常而崩溃? 是,如果您试图使操作依赖于返回的日期,则该日期为空

    代码执行了吗? 代码将执行异常,因为数据访问被拒绝。您可以检查是否授予了权限,并为每个状态添加方案

    该应用是否在审查中被拒绝?(总是?)不确定,但在发生碰撞时,被拒绝的可能性很大

    应用程序是否从商店中退市? 取决于您使用数据的原因和方式 这取决于Android的版本吗?
    是访问数据和权限更改点是android oreo

    我的蓝牙权限测试显示以下内容:所需权限是Bluetooth\u ADMIN、Bluetooth和for VERSION\u code。Q另外Manifest.permission.access\u BACKGROUND\u位置(请参阅:)

    BLUETOOTH_ADMIN,BLUETOOTH不向用户显示任何系统警报对话。在Android Q+中,如果您没有检查所需的访问权限后台位置权限,则不会发生任何事情,您的代码也会毫无例外地执行(我的代码在三星平板电脑的硬件上执行了UART命令)。该应用程序通过了审查,尽管检查缺失(当然我会尽快修复)


    注意:文档模棱两可,并声明:“在Android 10及更高版本上运行的服务无法发现蓝牙设备,除非它们具有访问\u后台\u位置权限。”可能允许在应用程序处于活动状态时进行常规扫描。在这种情况下,将解释缺少异常。

    如果您未经必要的许可执行代码。它将抛出一个异常。因为你肯定不想创建一个在不允许权限的情况下崩溃的应用程序。对于第五个,一个运行时权限从android 6开始,这是一个漫长的过程。你应该能够自己测试它,只需要写一些需要权限的东西,而不需要请求它。我对这个问题的更新应该会回答你的一些反对意见。崩溃目前还可以,只有在极少数情况下测试内容时才会触发。但是现在没有时间来正确修复它,也不会影响用户体验。我测试了它,蓝牙发现代码通过UART执行和连接,没有崩溃和警报。这就是为什么我要问。我甚至可以启动altbeacon后台服务,而无需崩溃和清单中的许可。很有效,谢谢你的回答。我希望在发布时抛出异常。在测试中,他们没有。用户无法触发异常。只有使用信标功能的基于位置的内容才能触发它。代码经过测试,没有崩溃,直到今天还没有人注意到丢失的grant权限调用。测试过程中的崩溃可能会有所帮助。将crashlatycs或任何崩溃报告程序添加到项目中以收集任何错误