首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从targetSdkVersion 21更改为targetSdkVersion 26时出错

从targetSdkVersion 21更改为targetSdkVersion 26时出错
EN

Stack Overflow用户
提问于 2018-08-07 06:46:05
回答 2查看 272关注 0票数 0

后来我从targetSdkVersion 21转到了targetSdkVersion 21。这样做产生了几个问题。

  1. 我编写了一个类并运行了,但是gose到抛出了新的RuntimeException(e) 代码如下所示: 包com.xxxxxxxxxx.android.webapp.util;导入android.content.Context;导入android.telephony.TelephonyManager;导入com.xxxxxxxxxx.android.webapp.BuildConfig;导入java.io.File;导入java.io.FileOutputStream;导入java.io.IOException;导入java.io.RandomAccessFile;导入java.security.MessageDigest;导入java.security.NoSuchAlgorithmException;公共类安装{私有静态字符串sID = null;私有静态最终字符串安装=“安装”;公共同步静态字符串id(上下文){ if (sID == null) {文件安装=新文件(context.getFilesDir(),安装);尝试{ if (!installation.exists()writeInstallationFile(安装,上下文);sID =readInstallationFile(安装,上下文);} catch (异常e) {抛新RuntimeException(e);}返回sID;}私有静态字符串readInstallationFile(文件安装,上下文上下文)抛出IOException { RandomAccessFile f=新RandomAccessFile(安装,"r");byte[]字节=新字节(Int) f.length();f.readFully(字节);f.close();返回新字符串(字节);}私有静态空writeInstallationFile(文件安装,上下文上下文)抛出IOException { FileOutputStream out = new FileOutputStream(安装);String id =getUniqueID(上下文);//null.随机null().toString( );out.write(id.getBytes());out.close();}私有静态字符串getUniqueID(上下文){ String android_id = android.provider.Settings.Secure.getString( context.getContentResolver(),android.provider.Settings.Secure.ANDROID_ID);String eid = null;尝试{ eid = Encryptor.encrypt("gignoGawaAppli",android_id );如果(BuildConfig.uidEncryptionMd5) { eid = md5(eid);}catch (异常e){};返回eid;}公共静态字符串MD5 (字符串s) { try { // Create MD5 Hash MessageDigest文摘= digest.update(s.getBytes());字节messageDigest[] = digest.digest();//创建十六进制字符串StringBuffer hexString =新的StringBuffer();for (int i= 0;i< messageDigest.length;i++) { if ((0xff & messageDigesti) < 0x10) { hexString.append("0“+Integer.toHexString(0xFF& messageDigesti));}}返回hexString.toString();}NoSuchAlgorithmException (NoSuchAlgorithmException e) { e.printStackTrace();}返回“;}

在控制台上像一样开胃

由: java.lang.RuntimeException: java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法byte[] java.lang.String.getBytes()引起

  1. 无法获得ANDROID_ID 当我的项目targetSdkVersion's 21一切都好的时候。

请帮忙,非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2018-08-07 07:36:56

问题可能在于您不提供运行时权限。这里是教程

票数 0
EN

Stack Overflow用户

发布于 2018-08-07 07:54:51

“由: java.lang.RuntimeException: java.lang.NullPointerException引发:尝试在空对象引用上调用虚拟方法'byte[] java.lang.String.getBytes()‘”

这是因为下面的代码

代码语言:javascript
复制
String id = getUniqueID(context);   //UUID.randomUUID().toString(); 

返回一个空指针,这意味着方法getUniqueID没有正确执行。您需要调试此方法才能获得更多详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51720457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档