最終更新:
moonlight_aska 2013年10月14日(月) 22:28:18履歴
ホーム画面に配置したウィジェットから他のアプリを起動するには, ペンディングインテント(PendingIntent)クラスを利用する.
注) AndroidManifest.xmlは, ホーム画面用AppWidgetを作成するを参照.
動作例:

↓ Jump Webをクリック

- Widget01.java
- RemoteViewsのインスタンスを取得する.
- Intentを使って起動するアプリを設定する.
- PendingIntent#getActivityメソッドで, PendingIntentのインスタンスを取得する.
- RemoteViews#setOnClickPendingIntentメソッドで, ButtonクリックにPendingIntentを紐付ける.
- appWidgetManager#updateAppWidgetメソッドで, ウィジェットを更新する.
package com.moonlight_aska.android.widget01;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.widget.RemoteViews;
public class Widget01 extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// TODO Auto-generated method stub
Log.v("Widget", "onUdate");
// RemoteVIewsのインスタンス取得
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
// メール起動の仕組み
Intent mailIntent = new Intent(Intent.ACTION_SEND);
mailIntent.setType("plane/text");
PendingIntent mailPending = PendingIntent.getActivity(context, 0, mailIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.mail_id, mailPending);
// Web起動の仕組み
Intent webIntent = new Intent(Intent.ACTION_VIEW);
webIntent.setData(Uri.parse("http://www.google.com"));
PendingIntent webPending = PendingIntent.getActivity(context, 0, webIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.web_id, webPending);
// ウィジェットを更新
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
}
- res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:id="@+id/mail_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/mail_label"
/>
<Button android:id="@+id/web_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/web_label"
/>
</LinearLayout>
- res/xml/widget.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="72dip"
android:minWidth="146dip"
android:initialLayout="@layout/main"
android:updatePeriodMillis="0"
/>
注) AndroidManifest.xmlは, ホーム画面用AppWidgetを作成するを参照.
動作例:

↓ Jump Webをクリック

コメントをかく