zoukankan      html  css  js  c++  java
  • Android添加代码检查权限

    1,首先创建一个项目,然后创建一个类,hello.java

    public class hello {
    
    
        public static final String PERMISSION_SAY_HELLO = "examples.ouc.com.checkpermissioncode.permission.SAY_HELLO";
    
        public static void sayhello(Context context){
    
            //检查代码是否拥有这个权限
            int checkResult = context.checkCallingOrSelfPermission(PERMISSION_SAY_HELLO);
           
            //if(!=允许),抛出异常
            if (checkResult!= PackageManager.PERMISSION_GRANTED){
                throw new SecurityException("执行sayhello方法需要权限");
            }
         //如果允许了,就输出下面这句话
            System.out.println("Hello 极客学院");
        }
    }

    2,在AndroidManifest中添加permission

     <permission android:name="examples.ouc.com.checkpermissioncode.permission.SAY_HELLO"/>

    3,在MainActivity调用hello中的sayhello方法

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            hello.sayhello(this);
    
        }
    }

    4,我们这时候运行app是无法运行的,如下图

    我们查看run中给出的原因

    发现,我们并没有获得权限,为什么呢?我们虽然添加了一个权限,但是并没有给用户添加权限

    5,因此我们需要给用户添加权限:

        在AndroidManifest中再添加上下面的第二行代码

     <permission android:name="examples.ouc.com.checkpermissioncode.permission.SAY_HELLO"/>
    
        <uses-permission android:name="examples.ouc.com.checkpermissioncode.permission.SAY_HELLO"/>

    这时候我们再次运行app,会发现app成功打开,再去run中查看消息,会发现,我们成功输出了下面的这句话

  • 相关阅读:
    保留字段数组,一定要用char
    VirtualBox安装CentOS 7及其相关配置
    istringstream是支持>>一个bool的,但为什么不用?
    用vector实现一个变长数组
    C语言为什么被const声明的变量不是一个常量表达式
    不咬文嚼字的理由
    int变量赋值给char变量的本质
    #include <> 和 #include "" 的区别
    C++中匿名对象应当是一个左值
    js实战之-间断文字滑动
  • 原文地址:https://www.cnblogs.com/icyhusky/p/6020672.html
Copyright © 2011-2022 走看看