0

私はAndroid用のウィジェットに取り組んでいます。このために、未読メッセージの量と現在の時刻を表示しようとしています。現在の時刻は問題なく機能していましたが、メッセージ部分を追加したので、読み込もうとするとクラッシュします。これは私のコードです:

public class MyTime extends TimerTask {

RemoteViews remoteViews;
AppWidgetManager appWidgetManager;
ComponentName thisWidget;
Context context;

java.text.DateFormat format = SimpleDateFormat.getTimeInstance(
        SimpleDateFormat.SHORT, Locale.getDefault());

public MyTime(Context context, AppWidgetManager appWidgetManager) {
    this.appWidgetManager = appWidgetManager;
    remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
    thisWidget = new ComponentName(context, LeafClockWidget.class);

}

@Override
public void run() {
    SimpleDateFormat sdf1 = new SimpleDateFormat("EEEE, MMMM dd");
    Date d = new Date(System.currentTimeMillis());
    String time1 = sdf1.format(d);

    final Uri SMS_INBOX = Uri.parse("content://sms/inbox");

    Cursor c = context.getContentResolver().query(SMS_INBOX, null, "read = 0", null, null);
    int unreadMessagesCount = c.getCount();
    c.deactivate();

    remoteViews.setTextViewText(R.id.widget_textview3, "You have " + c + " unread SMS messages.");

    remoteViews.setTextViewText(R.id.widget_textview1, time1);
    remoteViews.setTextViewText(R.id.widget_textview2, "The time is "
            + format.format(new Date(System.currentTimeMillis())));

    appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}

}

コードのどこにエラーがあるのか​​ を見つけるのに苦労しているので、皆さんが私を助けてくれることを本当に願っています!

4

1 に答える 1

0

編集:

まず、c.deactivate() 廃止されたため削除します。

私はContentResolverのに慣れていないので、私が与えるアドバイスは私自身の研究に基づいていることに注意してください。あなたの問題はあなたの条項かもしれないと思いますか?この回答をチェックして、役立つかどうかを確認してください。あなたは彼/彼女と非常に似たものが欲しいでしょうWHERECursor query()if(c != null)c.moveToFirst()


LogCatはあなたの親友です。問題/例外/エラーが発生した場合は、LogCatの出力を質問に貼り付けてください。

クイックヒント、使用できるコードのエラーを見つけるためにtry-catchそしてあなたのLogCat

次に例を示します。

@Override
public void run() {
    try {
        SimpleDateFormat sdf1 = new SimpleDateFormat("EEEE, MMMM dd");
        Date d = new Date(System.currentTimeMillis());
        String time1 = sdf1.format(d);
    } catch(Exception e1) {
        Log.e("SimpleDateFormat", "FAILED: " + e1.getMessage());
    }


    final Uri SMS_INBOX = Uri.parse("content://sms/inbox");

    try {
        Cursor c = context.getContentResolver().query(SMS_INBOX, null, "read = 0", null, null);
        int unreadMessagesCount = c.getCount();
        c.deactivate();
    } catch (Exception e2) {
        Log.e("Cursor", "FAILED: " + e2.getMessage());
    }

    remoteViews.setTextViewText(R.id.widget_textview3, "You have " + c + " unread SMS messages.");

    remoteViews.setTextViewText(R.id.widget_textview1, time1);
    remoteViews.setTextViewText(R.id.widget_textview2, "The time is "
            + format.format(new Date(System.currentTimeMillis())));

    appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
于 2012-08-31T16:04:39.427 に答える