我在市场上有一个应用程序,并收到一些指向同一行的错误。问题是,我无法确定错误是什么,因为我在模拟器和几部手机中都没有遇到过。我在模拟器中针对 ldpi、mdpi、hdpi 密度以及 2.1 和 4.0.3 进行了测试。我在 2.2、2.3.5 和 4.0.3 的手机上试用过。
这是代码和错误行:
Log.i("REFRESH d1 | d2", d1 + "|" + d2); //null | null
if ((d1 == null) && (d2 == null))
{
String dA = "";
HotOrNot infod = new HotOrNot(Calllogs.this);
infod.open();
Cursor cursorA = infod.getAllTitles_DateLimit1("DESC");
if (cursorA.moveToFirst())
{
do{
dA = cursorA.getString(5);
}while (cursorA.moveToNext());
}
d1= dA;
infod.close();
String dB = "";
HotOrNot infodd = new HotOrNot(Calllogs.this);
infodd.open();
Cursor cursorB = infodd.getAllTitles_DateLimit1("ASC");
if (cursorB.moveToFirst())
{
do{
dB = cursorB.getString(5);
}while (cursorB.moveToNext());
}
d2=dB;
infodd.close();
}
else
{
}
Log.i("REFRESH2 d1 | d2", d1 + "|" + d2); // 1339789896078|1339790132268
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(Long.parseLong(d1)); //NumberFormatException
cal1.set(cal1.get(Calendar.YEAR), cal1.get(Calendar.MONTH), cal1.get(Calendar.DATE), 0, 0, 0);
GlobalVars.setD1(String.valueOf(cal1.getTimeInMillis()));
Calendar cal2 = Calendar.getInstance();
cal2.setTimeInMillis(Long.parseLong(d2));
cal2.set(cal2.get(Calendar.YEAR), cal2.get(Calendar.MONTH), cal2.get(Calendar.DATE), 23, 59, 59);
GlobalVars.setD2(String.valueOf(cal2.getTimeInMillis()));
错误
java.lang.NumberFormatException:在 java.lang.Long.parseLong(Long.java:337) 在 java.lang.Long.parseLong(Long.java:311) 在 com.b2creative.b2callstats.Calllogs$14.run(Calllogs. java:1416) 在 java.lang.Thread.run(Thread.java:1019)
d1 和 d2 是声明的字符串,并且来自数据库的数据是字符串很好(我将日期存储为字符串(如 longs:1339789896078))。除了用户在呼叫日志中没有呼叫,因此数据库为空之外,我想不出其他原因导致此异常。
也许long.decode
更好?
我在想可能是用户没有 sdcard,但它在 2 部没有 sd 卡的手机上运行流畅。问题的根源可能是什么?