Android 6.0获取IMEI号是出错,动态获取权限
来源:互联网 发布:淘宝卖的苍蝇水叫什么 编辑:程序博客网 时间:2024/05/21 11:02
之前更新了一个版本,获取用户的IMEI设备号,本地手机测试没问题,就放到服务器上,结果有很多用户反应,应用打不开。也不是全部用户,只有少部分Android 6.0系统的用户和一些root过的用户,由于那不到用户手机,只能从错误日志中查看。
出错日志:
SUPPORTED_64_BIT_ABIS=[Ljava.lang.String;@cdce4d6versionCode=42BOARD=MSM8974BOOTLOADER=unknownTYPE=userID=MMB29MTIME=1458153356000BRAND=XiaomiTAG=BuildSERIAL=953692f1HARDWARE=qcomSUPPORTED_ABIS=[Ljava.lang.String;@b4ad357CPU_ABI=armeabi-v7aRADIO=unknownIS_DEBUGGABLE=trueMANUFACTURER=XiaomiSUPPORTED_32_BIT_ABIS=[Ljava.lang.String;@85460f1TAGS=release-keysCPU_ABI2=armeabiUNKNOWN=unknownUSER=builderFINGERPRINT=Xiaomi/cancro_wc_lte/cancro:6.0.1/MMB29M/6.3.17:user/release-keysHOST=qh-miui-ota-bd55PRODUCT=cancro_wc_lteversionName=2.5.0DISPLAY=MMB29MMODEL=MI 4LTEDEVICE=cancrojava.lang.RuntimeException: Unable to start activity ComponentInfo{com.jshon.perdate/com.jshon.perdate.activity.SplashActivity}: java.lang.SecurityException: getDeviceId: Neither user 10147 nor current process has android.permission.READ_PHONE_STATE.at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2421)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)at android.app.ActivityThread.access$900(ActivityThread.java:153)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:148)at android.app.ActivityThread.main(ActivityThread.java:5432)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)Caused by: java.lang.SecurityException: getDeviceId: Neither user 10147 nor current process has android.permission.READ_PHONE_STATE.at android.os.Parcel.readException(Parcel.java:1620)at android.os.Parcel.readException(Parcel.java:1573)at com.android.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:4549)at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:711)at com.jshon.perdate.activity.SplashActivity.onCreate(SplashActivity.java:179)at android.app.Activity.performCreate(Activity.java:6303)at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2374)... 9 morejava.lang.SecurityException: getDeviceId: Neither user 10147 nor current process has android.permission.READ_PHONE_STATE.at android.os.Parcel.readException(Parcel.java:1620)at android.os.Parcel.readException(Parcel.java:1573)at com.android.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:4549)at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:711)at com.jshon.perdate.activity.SplashActivity.onCreate(SplashActivity.java:179)at android.app.Activity.performCreate(Activity.java:6303)at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2374)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)at android.app.ActivityThread.access$900(ActivityThread.java:153)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:148)at android.app.ActivityThread.main(ActivityThread.java:5432)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
可以看到,是在getDeviceId的时候出错:java.lang.SecurityException: getDeviceId: Neither user 10147 nor current process has android.permission.READ_PHONE_STATE.
网上说没有加权限,但是我在AndroidManifast.xml中确实是设置了权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" />。但是并没有起作用。只能动态获取了:
首先在AndroidManifest.xml中添加权限<uses-permission android:name="android.permission.READ_PHONE_STATE" />
然后在代码中添加:
//Android6.0需要动态获取权限 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {// toast("需要动态获取权限"); ActivityCompat.requestPermissions(SplashActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_PHONE_STATE); }else{// toast("不需要动态获取权限"); TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); Contants.IMEI = TelephonyMgr.getDeviceId(); }/** *加个获取权限的监听 */ @Override public void onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantResults) { if (requestCode == REQUEST_PHONE_STATE && grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); Contants.IMEI = TelephonyMgr.getDeviceId(); } }
1 0
- Android 6.0获取IMEI号是出错,动态获取权限
- Android获取IMEI号
- android 6.0 动态权限获取
- Android 6.0获取动态权限
- android 6.0权限动态获取
- Android 6.0权限动态获取
- Android动态获取权限
- Android 动态获取权限
- Android动态获取权限
- android 动态权限获取
- Android动态获取权限
- 【Android】获取IMEI码
- android 获取 imei号码
- android 获取 imei号码
- Android 获取IMEI号码
- android 获取 imei号码
- android 获取 imei号码
- android 获取 imei号码
- HTML笔记
- 分布式缓存--序列4--缓存更新策略/缓存穿透/缓存雪崩
- mean.binaryproto未找到的解决办法
- *计算机学习笔记杂项
- apache ftp 实现上传下载功能
- Android 6.0获取IMEI号是出错,动态获取权限
- 阶段性纠错邀请
- Android 布局详解 -三表格布局(TableLayout)以及重要属性
- 带你从源码看Android Handler 异步消息处理机制完全解析
- 告诉你1年读100本书的方法
- 移动端meta标签的使用
- 用 AdvStringGrid addbutton 中添加图片(BMP/JPG)
- lua UTF8字符串操作,截取,索引
- Spring__容器启动源码