今回は通知エリアに表示された通知をクリックしてアクティビティを呼び出すようにしてみます。
以下は、自アクティビティを呼ぶサンプルです。
「通知(Notification)」のサンプル、NotificationTest1aActivity.javaをベースに作りました。
NotificationTest6aActivity.java
package jp.co.triware.samples.NotificationTest6a; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class NotificationTest6aActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final NotificationManager notifMgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); final EditText etTickerText = (EditText)findViewById(R.id.tickerText_et); final EditText etContentText = (EditText)findViewById(R.id.contentText_et); Button btnNotify = (Button)findViewById(R.id.notify_btn); btnNotify.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { // ステータスバーと通知エリアに表示する内容をセット int icon = R.drawable.ic_launcher; // アイコン String tickerText = etTickerText.getText().toString(); // テキスト(ステータスバー) long when = System.currentTimeMillis(); // 時刻 Notification notif = new Notification(icon, tickerText, when); // 通知エリアに表示する内容をセット String contentTitle = getString(R.string.app_name); // タイトル String contentText = etContentText.getText().toString(); // 通知メッセージ Intent intent = getIntent(); // 自アクティビティ PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0); notif.setLatestEventInfo(getApplicationContext(), contentTitle, contentText, contentIntent); // 通知 notifMgr.notify(R.string.app_name, notif); } }); } }
変更箇所は36行目だけです。
変更前: Intent intent = null; // タップ時の処理(今回は何もしない)
変更後: Intent intent = getIntent(); // 自アクティビティ
36行目で自分のインテントを取得して、それを37行目で、遷移先としてセットしています。
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/tickerText_et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Ticker Text" /> <EditText android:id="@+id/contentText_et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Content Text" /> <Button android:id="@+id/notify_btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Notify" /> </LinearLayout>
こちらは変更なし、NotificationTest1aのmain.xmlと全く同じです。
Androidプロジェクトの設定
ビルドターゲットや最小SDKバージョンは、お使いの開発環境に合わせて設定してください。
プロジェクト名: NotificationTest6a アプリケーション名: NotificationTest6a パッケージ名: jp.co.triware.samples.NotificationTest6a アクティビティーの作成: NotificationTest6aActivity
実行結果
NotificationTest1aと同様、TickerTextとContentTextを入力して、Notifyボタンをクリックします。
通知エリアが消えた際、本当に自アクティビティに戻っているかどうか確認するために、ホームキーを押してホーム画面に遷移しておきます。NotificationTest1aで試すとわかると思いますが、インテントをセットしていない場合は、通知エリアを閉じるだけになります。
通知エリアを開いて「NotificationTest6a」をクリックすると、NotificationTest6aに戻りました。
0 件のコメント:
コメントを投稿