4

Androidアプリで「動作しました」という通知を設定しようとしていますが、API 1に至るまで互換性を持たせる必要がありますが、これを行う方法については本当に混乱しています。非推奨の古いチュートリアルと、古いAPIレベルをサポートしない新しいチュートリアルがあります。このSOの質問によると、 NotificationCompat.Builderを使用する必要があります。私が使用している例がありますが、コードを完全には理解していません。

このコードから:

Intent notificationIntent = new Intent(ctx, YourClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(ctx,
        YOUR_PI_REQ_CODE, notificationIntent,
        PendingIntent.FLAG_CANCEL_CURRENT);

NotificationManager nm = (NotificationManager) ctx
        .getSystemService(Context.NOTIFICATION_SERVICE);

Resources res = ctx.getResources();
Notification.Builder builder = new Notification.Builder(ctx);

builder.setContentIntent(contentIntent)
            .setSmallIcon(R.drawable.some_img)
            .setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.some_big_img))
            .setTicker(res.getString(R.string.your_ticker))
            .setWhen(System.currentTimeMillis())
            .setAutoCancel(true)
            .setContentTitle(res.getString(R.string.your_notif_title))
            .setContentText(res.getString(R.string.your_notif_text));
Notification n = builder.build();

nm.notify(YOUR_NOTIF_ID, n);

下に赤い線が表示されます:ctx、、、YOUR_PI_REQ_CODEYOUR_NOTIF_ID

4

2 に答える 2

2

ctxコンテキストです。代わりにあなたのアクティビティを渡すことができます。

YOUR_PI_REQ_CODEPendintIntentリクエストコードです。任意のint定数にすることができます。

YOUR_NOTIF_ID通知IDです。これは、任意のint定数にすることもできます。

于 2012-10-11T23:31:48.867 に答える
2

このctx変数は、Androidコンテキスト(多くの場合、アクティビティ(または実際にはアクティビティを拡張するクラス))を対象としています。

PendingIntent理解するためにクラスについて少し調査YOUR_PI_REQ_CODEする必要がありますが、ここに何を置くかを決定する必要があります。これは保留中のインテントリクエストコードです。

また、通知IDNotificationManager notify()として何を使用するかを決定する方法を調査する必要があります。

于 2012-10-11T23:32:01.283 に答える