NotificationにカスタムRemoteViewsをセット
NotificationManagerに登録するオブジェクト・Notificationを次のようにすると、カスタムLayoutを表示することができます。NotificationManager notificationManager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.icon, context.getString(R.string.app_name), 0); notification.contentView = new RemoteViews(context.getPackageName(),YOUR_CUSTOM_LAYOUT_ID);
下の画像みたいな感じで表示できます。
各画像からIntentを発行したい
カスタムLayoutが表示できるとなると、次は「各画像をクリックしたら各アプリを起動」したくなります。RemoteViewsは以下のように各ViewにPendingIntentをセットすることができます。
notification.contentView.setOnClickPendingIntent( VIEW_ID, pendingIntent);
しかし、結論からいうと、FroyoでもGingerBreadでもIntent起動は不可能でした。
(※ただしHTC端末は可能。Android OS 3.0から正式サポートされています)
以下のソースをみれば理解できると思いますが、Intentの発行処理はnotification.contentIntentのみ対象となっています。
\frameworks\base\services\java\com\android\server
- StatusBarManagerService.java
- NotificationManagerService.java
Android OS 3.0から正式サポート
各ViewのPendingIntentによる起動がAndroid OS 3.0から正式サポートされています。デベロッパーサイト Android 3.0 Platform
Support for custom notification layouts to include buttons with PendingIntents, for more interactive notification widgets. For example, a notification can control music playback without starting an activity.
Motorola Xoomで確認すると次のような表示ができました。また、アイコンをクリックするとアプリ起動も可能でした。
0 件のコメント:
コメントを投稿