zoukankan      html  css  js  c++  java
  • Android学习笔记——自定义permission

    最近在配置BroadcastReceiver的时候,发现一条警告,如下图:

     

    百度了一下,网上的答案基本都是说把receiver标签的exported属性改为false。这样做确实是可以去掉警告,但是会引起的一个问题就是这个广播不能被其他应用程序所使用。官方文档是这样写的:

    Flag indicating whether the given application component is available to other applications.

    虽然说这只是一个警告,但本人的强迫症作祟,看着实在难受~~~于是果断查看帮助文档。终于,还是找到了问题的根本原因。

    http://developer.android.com/guide/topics/security/permissions.html

    警告的原因大概是说,如果没有给Broadreceiver或ContentProvider加上权限的话,那么其它任何程序都是可以无障碍地访问这些组件的。所以最好的解决方法就是加上一个我们自己定义的权限。官方如是说:

    To enforce your own permissions, you must first declare them in your AndroidManifest.xml using one or more <permission> tags.

     

    然后在我们的receiver中添加相应的权限就行:

     

    很好,世界清静了!

    如果想让其它程序可以调用这个接收器,那么,那个程序就要引用这个权限了。

     

    两个程序都安装之后,我们可以去看看那个调用广播的程序的权限:

     

    嗯,这个就是我们自己的权限!

    同样的道理,ContentProvider的配置也是类似的,不过ContentProvider可以将读和写两个权限分开配置,更加的细粒度。

    还有另外一个地方也是别人容易忽略的,就是有时候我们要发送的广播的动作有多个应用是一样的,比如有两个广播接收器的action都是“android.intent.action.EDIT”,那我们发送一个为该动作的广播就会调用多个广播接收器。

    这时候我们也可以使用自己定义的权限来解决。然后使用

     

    这个方法来发送广播,这样即使动作相同,也只有拥有权限的接收器可以收到。

  • 相关阅读:
    SonarQube代码质量管理平台安装与配置
    特殊字符大全
    测试“用户登录”功能
    通用测试用例大全
    k8s dashboard 部署并使用 kubeconfig 登陆
    k8s cert-manager 部署
    nginx ingress部署
    Harbor 安装
    kubernetes 高可用集群1.14 部署
    shell 免密远程执行
  • 原文地址:https://www.cnblogs.com/yjiyjige/p/3135085.html
Copyright © 2011-2022 走看看