以编程方式为Android服务

时间:2017-08-10 08:43:49

标签: android android-camera android-permissions

我正在构建一个应该在没有任何屏幕的硬件上运行的应用程序。要运行该应用程序,我需要两个权限:相机和写入存储。由于我的应用程序没有任何UI,并且设备没有任何显示UI的方法,我想知道如何为应用程序授予权限。

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

我建议你看看以下帖子:Permission issue while starting a service from android

  

在服务中声明服务时,可以强制执行对服务的全局访问   清单的标签。通过这样做,其他应用程序将需要声明一个   在自己的清单中相应的元素能够启动,停止,   或绑定到服务。

     

从GINGERBREAD开始,当使用Context.startService(Intent)时,你可以   还设置了Intent.FLAG_GRANT_READ_URI_PERMISSION和/或   意图上的Intent.FLAG_GRANT_WRITE_URI_PERMISSION。这将授予   服务临时访问Intent中的特定URI。   访问将保持不变,直到服务为此调用stopSelf(int)   启动命令或更晚的命令,或直到服务完全   停止。这适用于授予对其他应用程序的访问权限   没有请求保护服务的权限,甚至是   服务根本不会导出。

     

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

     

有关详细信息,请参阅“安全和权限”文档   权限和安全性。

答案 1 :(得分:0)

在没有UI(没有任何xml布局)的情况下进行透明活动,并为android marshmallow权限执行代码。当您的应用程序运行时,然后从服务调用此活动,只有当app从硬件或任何地方触发时,用户才会看到权限。 app是开放的透明活动是开放的,用户可以给予许可。