Android 在没有此功能时获取下一个报警信息

Android 在没有此功能时获取下一个报警信息,android,exception,error-handling,alarm,Android,Exception,Error Handling,Alarm,我的应用程序中有此代码 Alarm1 = Settings.System.getString(getContentResolver(), Settings.System.NEXT_ALARM_FORMATTED); 它在HTC、motorolas上工作,但在galaxy s手机上不工作。应用程序崩溃了。 下面的代码是否会捕获错误而不会使应用程序服务崩溃 String Alarm1=null; try{ Alarm1 = Settings.Syste

我的应用程序中有此代码

Alarm1 = Settings.System.getString(getContentResolver(),
                Settings.System.NEXT_ALARM_FORMATTED);
它在HTC、motorolas上工作,但在galaxy s手机上不工作。应用程序崩溃了。 下面的代码是否会捕获错误而不会使应用程序服务崩溃

 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有不同的代码,我可以找到它。为了测试的目的,我如何让它在正常工作的手机上抛出异常?谢谢。

我开发的一个小部件也有同样的问题,似乎galaxy s上的settings.db上没有ID NEXT\u ALARM\u格式的条目,这会导致应用程序崩溃。遗憾的是,使用try/catch还不足以解决这个问题,小部件仍然崩溃

我没有Galaxy S来调试这个问题,如果您发现除了使用sqlite3插入row con settings.db之外的任何解决方法,请告诉我。也许你可以尝试通过向设置函数传递一个无效的ID来模拟这种行为,我今天稍后会尝试

另外,要在galaxy S上临时修复此问题,您可以通过adb shell

sqlite3 /data/data/com.android.providers.settings/databases/settings.db
UPDATE "system" SET value='' WHERE name='next_alarm_formatted';

Settings.System.NEXT_ALARM_格式自API 21以来已被弃用。请改用以下方法:

AlarmManager.AlarmClockInfo alarmInfo = am.getNextAlarmClock();
其中am是AlarmManager的一个实例

如果您有Galaxy S,请在Eclipse中使用adb logcat、DDMS或DDMS透视图来检查logcat并查看与异常相关的堆栈跟踪。如果你已经发布了你的应用程序,并且这些是来自用户的报告,你希望有一些东西可以向你报告堆栈跟踪,例如Flurry、DroidDrop。一旦我们有一个堆栈跟踪要检查,我们可以给你更好的建议。