2017-08-10 65 views
1

我正在构建应该在没有任何屏幕的硬件上运行的应用程序。要运行该应用程序,我需要两个权限:摄像头和写入存储。由于我的应用程序没有任何UI,并且设备没有任何显示UI的方式,所以我想知道如何为应用程序授予权限。以编程方式为Android服务授予权限

在这个特定的应用程序中,用户已经知道当用户按下按钮时该设备将拍摄图像。所以从用户的角度来看,不需要明确授予权限。

在此先感谢。

+0

有没有办法经常安卓。仅适用于Android的东西。 –

+0

检查此[如何请求权限 - 从服务在Android的棉花糖](https://stackoverflow.com/questions/32292675/how-to-request-permissions-from-a-service -in-android-marshmallow) – ELITE

回答

0

没有办法在运行时添加权限,它们必须在AndroidManifest中显式显示,因为它们需要在安装时呈现给Android用户。

我可以建议你看一看以下岗位:当它在其 清单的标签被宣布可以执行的Permission issue while starting a service from android

到服务的全球访问。通过这样做,其他应用程序将需要在其自己的清单中声明对应元素,以便能够启动,停止,或绑定到服务。

作为姜饼,使用Context.startService(意向)时,可以 还设置Intent.FLAG_GRANT_READ_URI_PERMISSION和/或 Intent.FLAG_GRANT_WRITE_URI_PERMISSION上的意图。这将授予 服务临时访问意向中的特定URI。 访问将保持到该服务已为该 启动命令或更高版本调用stopSelf(int),或者直到该服务已完全停止 。这适用于授予对其他应用程序的访问权限,这些应用程序没有请求保护服务的权限,或者甚至根本没有导出 服务。

此外,通过在执行该调用之前调用checkCallingPermission(String)方法 ,服务可以通过 权限保护单个IPC调用。

有关 权限和安全性的更多信息,请参见安全性和权限文档。

0

制作一个没有UI(没有任何xml布局)的透明活动并且执行android棉花糖权限的代码。当您的应用程序运行,然后从服务中调用此活动,并且仅当应用程序从硬件或任何位置触发时,用户才会看到权限。而应用程序是开放的透明活动是开放的,用户可以授予权限。

+0

但问题是设备上没有屏幕。所以用户无法查看权限。 – KTB

+0

您的应用程序只有服务正确...从该服务调用透明活动启动您的应用程序。意味着当应用程序触发某事(启动服务)。 简单:步骤1您可以在没有UI和代码的情况下进行透明活动,获得您想要的权限。 第2步。从服务调用此活动得到它(您可以从服务启动活动,不需要任何UI屏幕)。 而当此活动只调用权限弹出来第一次时,应用程序嵌入在设备中。 –