
android程序如果出问题,因为实际是java程序,所以会抛出异常,比如这样。d出的警告对话框中没有异常信息,如果需要看到日志内容,可执行:adb logcat即可见到异常信息。或者通过ddms,通过device》run logcat通过图形界面查看日志,和上面的命令效果一样。这是一个异常的内容:W/dalvikvm(26121): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)E/AndroidRuntime(26121): Uncaught handler: thread main exiting due to uncaught exceptionE/AndroidRuntime(26121): javalangRuntimeException: Unable to start activity ComponentInfo{comeasymorseactivity/comeasymorseactivityActivityTest}: javalangSecurityException: Requires READ_PHONE_STATE: Neither user 10032 nor current process has androidpermissionREAD_PHONE_STATEE/AndroidRuntime(26121): at androidappActivityThreadperformLaunchActivity(ActivityThreadjava:2268)E/AndroidRuntime(26121): at androidappActivityThreadhandleLaunchActivity(ActivityThreadjava:2284)E/AndroidRuntime(26121): at androidappActivityThreadaccess$1800(ActivityThreadjava:112)E/AndroidRuntime(26121): at androidappActivityThread$HhandleMessage(ActivityThreadjava:1692)E/AndroidRuntime(26121): at androidosHandlerdispatchMessage(Handlerjava:99)E/AndroidRuntime(26121): at androidosLooperloop(Looperjava:123)E/AndroidRuntime(26121): at androidappActivityThreadmain(ActivityThreadjava:3948)E/AndroidRuntime(26121): at javalangreflectMethodinvokeNative(Native Method)E/AndroidRuntime(26121): at javalangreflectMethodinvoke(Methodjava:521)E/AndroidRuntime(26121): at comandroidinternalosZygoteInit$MethodAndArgsCallerrun(ZygoteInitjava:782)E/AndroidRuntime(26121): at comandroidinternalosZygoteInitmain(ZygoteInitjava:540)E/AndroidRuntime(26121): at dalviksystemNativeStartmain(Native Method)E/AndroidRuntime(26121): Caused by: javalangSecurityException: Requires READ_PHONE_STATE: Neither user 10032 nor current process has androidpermissionREAD_PHONE_STATEE/AndroidRuntime(26121): at androidosParcelreadException(Parceljava:1234)E/AndroidRuntime(26121): at androidosParcelreadException(Parceljava:1222)E/AndroidRuntime(26121): at comandroidinternaltelephonyIPhoneSubInfo$Stub$ProxygetLine1Number(IPhoneSubInfojava:223)E/AndroidRuntime(26121): at androidtelephonyTelephonyManagergetLine1Number(TelephonyManagerjava:498)E/AndroidRuntime(26121): at comeasymorseactivityActivityTestonCreate(ActivityTestjava:18)E/AndroidRuntime(26121): at androidappInstrumentationcallActivityOnCreate(Instrumentationjava:1123)E/AndroidRuntime(26121): … 11 more日志引用在android系统中获取imei号和其他手机信息 发送文章为PDF
WEB这东西,本来就是跨平台的东西,对于不同平台就有不同的浏览器,不同厂家的浏览器又不太一样。
尤其这种比较偏的底层接口。
2就拿开发Android的WEB浏览器常用的WebView,就本身N个版本,接口改了又改。
你的网页还要跨平台,不管Android,还是WindowsPhone,适应于他们的变化有多复杂,自己要三思。
3做那种混合型的App来让用户浏览自己的网站,内嵌WebView,通过JS和App交互,获取你需要的IMEI等等信息。
4单纯Web页面是无法获取IMEI,除非W3C修订JavaScript标准,增加接口,并让浏览器厂商开始支持。
5目前想获取IMEI,必须是app和Web页面相结合方式。
就如当前有个hbuilder开发工具,DCloud开发的。
6可以调用手机系统API,原理类似于Java反射技术。
他们封装的比较好。可以直接通过js调用。
7当然最后发布的不是真正的纯Web页面,是一个app安装包。
这里面的语法不是在任何浏览器都能运行的。
但发布的安装包,内部封装好的浏览器是可以支持相应的js方法。
8web请求字段的UserAgent 段里只有 *** 作系统版本,浏览器类型,浏览器内核版本这些信息,不会有其他信息。
9至于ip,只要连接到web服务器,服务器就知道了,mac地址也是。
Android获取IMSI和IMEI :
IMSI是一个唯一的数字,标识了GSM和UMTS 网络里的唯一一个用户
它存储 在手机的SIM卡里,它会通过手机发送到网络上。
IMEI也是一串唯一的数字,标识了GSM 和UMTS网络里的三星 Galaxy I9100。
它通常被打印在手机里电池下面的那一面,拨 #06# 也能看到它。
代码:
这里是你在Android里读出 唯一的 IMSI-ID / IMEI-ID 的方法。
Java:
String myIMSI =
androidosSystemPropertiesget(androidtelephonyTelephonyPropertiesPROPERTY_IMSI
);
// within my emulator it returns: 310995000000000
String myIMEI =
androidosSystemPropertiesget(androidtelephonyTelephonyPropertiesPROPERTY_IMEI
);
// within my emulator it returns: 000000000000000
手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手
机号码的数据写入到sim卡中。sim卡只有唯一的编号,供网络与设备识别那就是imsi号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。
试想,你的sim丢失后,补办一张新的会换号码吗 —不会就是因为在你的手机号码对应的 imsi号在移动运营商中被修改成新sim卡的imsi号码。
这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。
/ 获得手机的一些标志符 @param c @return String 手机的类型 /
public String fetch_status(Context c) {
TelephonyManager tm = (TelephonyManager) c
getSystemService(ContextTELEPHONY_SERVICE);//
String str = "";
String IMSI = tmgetSubscriberId();
str += "DeviceId(IMEI) = " + tmgetDeviceId() + "/n";
str += "DeviceSoftwareVersion = " + tmgetDeviceSoftwareVersion()
+ "/n";
str += "Line1Number = " + tmgetLine1Number() + "/n";
return str;
}
jni通过反调JAVA接口的话,处理方式与JAVA层直接调用接口无异,需要声明权限。
jni直接可以读取设备的cpu、mac等linux kernel中的资料,至于imei是读不到的。另外,发短信也是要调用系统提供的JAVA层的API,如果要直接调用底层接口的话,你估计要重新编译自己的Android SDK才行。
jni反调java是个很恶心的工作,尤其是在多线程中,最好还是不要尝试。
有一种不需要声明权限的方法是,搞到kernel层的所有API,直接 *** 作硬件吧。当然那是不可能的。
因传统的移动终端设备标识如国际移动设备识别码(IMEI)等已被部分国家认定为用户隐私的一部分,并存在被篡改和冒用的风险,所以在Android 10及后续版本中非厂商系统应用将无法获取IMEI、MAC等设备信息。无法获取IMEI会在用户行为统计过程中对设备识别产生一定影响。近日移动安全联盟针对该问题联合国内手机厂商推出补充设备标准体系方案,选择OAID字段作为IMEI等的替代字段。OAID字段是由中国信通院联合华为、小米、OPPO、VIVO等厂商共同推出的设备识别字段,具有一定的权威性,可满足用户行为统计的使用场景。
移动安全联盟官网: 移动安全联盟刚官网地址
安全联盟SDK、文档以及申请表格: 安全联盟SDK1029文档及SDK
根据官网源文件 DemoHelperjava 修改而来,可以根据自己需求修改,这里是cocos工程,这里将文件 MiitHelperjava 放到 orgcocos2dxjavascript 目录中。
在 Activity 的 onCreate 函数中添加初始化。这是异步调用,使用需要注意一下。
IMEI即手机串号。
IMEI码具有唯一性,贴在手机背面的标志上,并且读写于手机内存中。它也是该手机在厂家的"档案"和"身份z号"。
手机中的IMEI号码就如同我们生活中的身份z一样,它是识别手机身份的重要依据。
其组成为:
1、前6位数(TAC)是"型号核准号码",一般代表机型。
2、接着的2位数(FAC)是"最后装配号",一般代表产 地。
3、之后的6位数(SNR)是"串号",一般代表生产顺序号。
4、最后1位数(SP)通常是"0",为检验码,目前暂备用。
当手机被盗的时候,如知道IMEI码,可以通过手机供应商进行手机锁定,即:获知被盗之后的手机号码,中止手机的通话功能,获知手机的方位。一般情况下,供应商不会对个人或单位提出的定位或锁定手机的请求进行受理。在国内,有关的国家安全部门会对手机串号进行一定程度的管理。
好像不支持获取sim卡号,楼上的方法获取到的是手机序列号,就是你在手机上输入#06#获取到的,有时候还会返回null
补充————————————
不是不涉及底层,我的理解是SIM卡是运营商的,可能做了某些限制,或者加密之类的,总之他不会让你那么轻易的读取到SIM卡的ID之类的东西,如果可以直接读取那么复制卡就简单了,这样对运营商就很不利
以上就是关于如何查看android产生的异常全部的内容,包括:如何查看android产生的异常、C# web怎么获取手机的唯一标识,比如IMEI,Mac地址、android 代码获取IMEI,IMSI都为空,怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)