android开发之路-报错之获取手机IMEI码

  android开发之路-报错之获取手机IMEI码

        在完成公司提出的新需求后,升级app时发现如果是之前手机已经安装过此app,则在自动下载app后,安装完成可以正常打开app,但是如果是之前没有安装过此app,则安装完成启动app的时候会白屏,并在一会儿过后弹出应用无响应,“关闭应用”和“继续等待”对话框,当然如果选择继续等待还是会继续弹出对话框。

    

          报错之后第一时间寻找错误日志,发现不管是bug上还是android studio只带的log(error)都没有显示错误信息,后来去找Verbose信息,发现在application里面报了一个错,错误信息是: 

Caused by: java.lang.SecurityException: getLine1Number: Neither user 10272 nor current process has android.permission.READ_PHONE_STATE or android.permission.READ_SMS.

        很显然了,这是一个securityException ,而我的手机是andrid7.0系统。所以肯定是权限问题导致的。而我的代码里面也已经动态获取权限了

String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.WRITE_APN_SETTINGS,Manifest.permission.CAMERA};
      if(Build.VERSION.SDK_INT>=23){
            String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CALL_PHONE,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.CAMERA,Manifest.permission.READ_SMS,Manifest.permission.READ_CALL_LOG};
            if(Utils.checkPermissionStrings(AppStartNewActivity.this,mPermissionList)){
                ActivityCompat.requestPermissions(this,mPermissionList,REQUEST_READ_PHONE_STATE);
            }
        }

    

  @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        doNext(requestCode,grantResults);
    }

    private void doNext(int requestCode, int[] grantResults) {
        if (requestCode == REQUEST_READ_PHONE_STATE) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission Granted
				uploadData();
            } else {
                // Permission Denied
                startMain();
            }
        }
    }

 

    所以动态获取权限是不行的了     

 

   在Stack Overflow上搜索这个错误,大致有两种解决方法,一种是获取动态权限,一直是把targetSdkVersion设置为23以下,这样编译的时候就会兼容6.0以上系统。

        于是在build.gradle里面把targetSDKVersion设置为22,再次编译,没有问题了。

       

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值