当前位置: 首页 > 知识库问答 >
问题:

如何从Android Marshmallow中的服务请求权限

高胜
2023-03-14

在Android Marshmallow中,当需要权限时,应该在运行时请求权限,而不是在安装应用程序时一次请求所有权限。然而,我似乎只能从活动中请求权限,这是一个问题,因为我的应用程序只包含服务。(你可能会问,这是为什么?该应用程序内置了一个Android Wear watch face,手机只需查找附近的照片即可发送到手表,无需任何活动。但它确实需要位置权限。)

那么,有没有办法向服务请求权限?还是像过去一样,强制在安装时授予权限?

共有3个答案

昌山
2023-03-14

看看PermissionEverywhere图书馆。它允许您从任何上下文请求权限。

它会创建一个通知,单击该通知会打开一个请求权限的活动。

库的github页面中的示例代码:-

@Override
  protected Boolean doInBackground(Void... params) {
      PermissionResponse response = PermissionEverywhere.getPermission(getApplicationContext(), 
      new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
              REQ_CODE,
              "Notification title", 
              "This app needs  a write permission", 
              R.mipmap.ic_launcher)
              .call();
      //waits..
      boolean isGranted = response.isGranted();

      if(isGranted){ //changed from isGrante to isGranted
      // Do stuff
      }
  }
范文昌
2023-03-14

我同意,这对于服务来说非常麻烦,我认为您应该在Android开发者预览页面上报告这个问题。

目前,我认为最好的解决方案是检查服务权限,如果缺少权限则显示通知。更好的是,当用户按下通知时,创建一个DialogActive来请求权限。

方河
2023-03-14

只能从活动而不是服务调用请求权限()(与只需要PackageManagercheck Persion()不同)。因此,您需要做一些额外的工作来解决这个问题;您确实需要在您的应用程序中提供一个活动,例如,您的服务可以检查它需要的权限,如果它们尚未被授予,它可以创建一个通知,并且可以通过描述性的短消息通知用户为什么会有通知以及当他们单击通知时需要发生什么等。

 类似资料:
  • 我最近更新了我的应用程序,以支持android 6Marshmallow。我按照指示https://developer.android.com/training/permissions/requesting.html 并添加了请求权限Manifest.permission.RECEIVE_SMS。当 im 运行以下代码时: 我得到 java.lang.SecurityException:权限拒绝:

  • 问题内容: 关于此问题: 将cookie从一个请求传输/传递到nodejs /protractor中的另一个请求 我又拿了一个 我如何查看通过nodejs执行的完整请求(标头+正文)? 问题答案: 是的,您可以…您可以从完整的响应正文访问完整的请求- 我有一个如下所示的通用完整响应结构 您可以通过如下代码访问

  • 我是web服务新手,正在阅读Martin Kalin的《Java Webservices》一书。我已经了解了它最初的基本概念,有一个问题: 假设将HTTP请求(包含SOAP消息信封)发送到JavaWeb服务()。该请求是否由Servlet内部处理,Servlet提取SOAP消息并将其转换为相应Java域对象,然后调用服务实现bean? 无论Metro和Axis等现成框架如何,这个问题都是通用的。只

  • 我正在Spring 3.1上构建REST服务。我正在为此使用@EnableWebMVC注释。由于我的服务将只接受JSON请求,因此我还希望将传入请求转储到MongoDB集合中以进行日志记录(以及稍后的数据转换)。我想访问原始的JSON请求(我可以在非Spring实现上使用“@Content HttpServletRequest request”作为方法参数来执行此操作)。 我是Spring新手。因

  • 我正在使用 MEAN 堆栈用户注册和登录示例 我想将图像上传到Cloudinary,但收到此错误: XMLHttpRequest无法加载https://api.cloudinary.com/v1_1/xxxx/upload.请求标头字段授权不被预检响应中的Access-Control-Allow-Headers允许。 如何为Cloudinary的请求删除此标头?

  • 问题内容: 当我在Node服务器上打印请求的内容时,在任何地方都看不到用户数据。 这是我的节点服务器: 这是Angular2代码: 任何人都可以帮我或解释如何处理角度的http请求。 问题答案: 那是你的服务器: 那是您的有角度的客户: 回购https://github.com/kuncevic/angular-httpclient- examples