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

Settings.System.NEXT_ALARM_FORMATTED は、API 21 以降では非推奨です。代わりに次を使用してください。

AlarmManager.AlarmClockInfo alarmInfo = am.getNextAlarmClock();

ここで、am は AlarmManager のインスタンスです。

于 2016-03-24T14:19:35.673 に答える
0

私が開発したウィジェットでも同じ問題が発生しました。Galaxy S では、settings.db に ID NEXT_ALARM_FORMATTED のエントリがないようです。これによりアプリがクラッシュします。悲しいことに、try/catch を使用しても問題を解決するには不十分で、ウィジェットは依然としてクラッシュします。

問題をデバッグするための Galaxy S がありません。回避策 (sqlite3 を使用して行 con settings.db を挿入する以外) が見つかった場合はお知らせください。設定機能に無効な ID を渡すことで、この動作をシミュレートできるかもしれません。今日は後で試してみます...

PS Galaxy sでこれを一時的に修正するには(adbシェル経由)

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 に答える