0

我的应用程序中有此代码

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有不同的代码,否则我能找到它。我怎样才能让它在一个可以工作的手机上抛出异常,以进行测试?谢谢。

4

2 回答 2

0

我在开发的小部件上遇到了同样的问题,似乎在 Galaxy S 上,settings.db 上没有 ID 为 NEXT_ALARM_FORMATTED 的条目,这会使应用程序崩溃。可悲的是,使用 try/catch 还不足以解决问题,小部件仍然崩溃。

我没有 Galaxy S 来调试问题,如果您找到任何解决方法(除了使用 sqlite3 插入行 consettings.db 之外),请告诉我。也许您可以尝试通过将无效 ID 传递给设置函数来模拟这种行为,我将在今天晚些时候尝试...

PS要在galaxy上临时修复此问题,您可以(通过adb shell)

sqlite3 /data/data/com.android.providers.settings/databases/settings.db
UPDATE "system" SET value='' WHERE name='next_alarm_formatted';
于 2010-12-09T13:52:45.783 回答
0

Settings.System.NEXT_ALARM_FORMATTED 自 API 21 起已弃用。请改用以下内容:

AlarmManager.AlarmClockInfo alarmInfo = am.getNextAlarmClock();

其中 am 是 AlarmManager 的一个实例。

于 2016-03-24T14:19:35.673 回答