2

JakeWharton による NotificationCompat2を使用しようとしています。NotificationCompat2 の文書によると

インポートを android.support.v4.app.NotificationCompat から com.jakewharton.notificationcompat2.NotificationCompat2 に簡単に変更し、NotificatonCompat2.Builder クラスを使用します。

com.jakewharton.notificationcompat2.NotificationCompat2次のコードを使用してインポートを変更しました

Notification notification = new NotificationCompat2.Builder(
        MainActivity.this).setContentTitle("Basic Notification")
        .setContentText("Basic Notification, used earlier")
        .setSmallIcon(R.drawable.lock).build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager notificationManager = (NotificationManager)
        getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, notification);

そして、アプリケーションは次のエラーでクラッシュしました

08-17 20:14:32.400: E/AndroidRuntime(289): FATAL EXCEPTION: main
08-17 20:14:32.400: E/AndroidRuntime(289): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xyz.notificationchk/com.xyz.notificationchk.MainActivity}: java.lang.IllegalArgumentException: contentIntent required: pkg=com.wissenways.notificationchk id=0 notification=Notification(vibrate=null,sound=null,defaults=0x0)

私の質問

アプリケーションがクラッシュする原因となっているのは何ですか?

4

1 に答える 1

1

エラーの内容はわかりませんが、このコードは機能します

private static final int UPDATE_PROGRESS = 123654789;
private NotificationManager notifManager;
private Context mContext;
private NotificationCompat2.Builder mNotification;
private String content = "";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = MainActivity.this;
    notifManager = (NotificationManager)
                    mContext.getSystemService(mContext.NOTIFICATION_SERVICE);
    mNotification = new NotificationCompat2.Builder(mContext)
            .setSmallIcon(android.R.drawable.sym_def_app_icon)
            .setTicker("Launch download")
            .setContentTitle("Downloader")
            .setContentText(content)
            .setContentIntent(getPendingIntent());
    notifManager.notify(UPDATE_PROGRESS, mNotification.build() );
}

private PendingIntent getPendingIntent() {
    Intent i = new Intent(mContext, MainActivity.class);
    i.setFlags(FLAG_ACTIVITY_CLEAR_TOP);
    return PendingIntent.getActivity(mContext, 0, i, 0);
}
于 2012-08-23T18:47:27.503 に答える