我在我的应用中有这段代码
Alarm1 = Settings.System.getString(getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED);
它在htcs,motorolas上工作,但不在galaxy的手机上工作。应用程序崩溃了。 以下是否会在不崩溃应用程序服务的情况下捕获错误?
String Alarm1=null;
try{
Alarm1 = Settings.System.getString(getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED);
}
catch (Exception e) {
Log.i("Exception", "Exception next alarm not found = " + e);
}
if (TextUtils.isEmpty(Alarm1)) {
//if i am i here either no alarm is set or couldn't read it from the phone
//do something else
}
除非galaxy s有不同的代码,否则我能找到它。我怎样才能让它在有效的手机上抛出异常,用于测试目的?谢谢。
答案 0 :(得分:0)
我在开发的小部件上遇到同样的问题,似乎在Galaxy S上没有设置ID为NEXT_ALARM_FORMATTED的settings.db,这会导致应用程序崩溃。遗憾的是,使用try / catch它还不足以解决问题,小部件仍然崩溃。
我没有Galaxy S来调试问题,如果你找到任何解决方法(除了使用sqlite3插入行con settings.db)让我知道。也许您可以通过将无效ID传递给设置功能来尝试模拟此行为,我今天稍后会尝试...
P.S。要暂时解决这个问题,你可以(通过adb shell)
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
UPDATE "system" SET value='' WHERE name='next_alarm_formatted';
答案 1 :(得分:0)
自API 21以来,不推荐使用Settings.System.NEXT_ALARM_FORMATTED。请改用以下内容:
AlarmManager.AlarmClockInfo alarmInfo = am.getNextAlarmClock();
其中am是AlarmManager的一个实例。