如何使用按钮在Android小部件上从浏览器打开网站?

时间:2011-06-05 03:16:09

标签: android android-widget android-internet

所以我一直在努力让这个工作起来,我不能为我的生活弄清楚。我尝试了许多不同的想法,我发现它只是谷歌搜索,但没有任何运气。我正在尝试创建一个Android小部件,您可以单击图像,它使用默认浏览器打开一个网站。我能够使图像和窗口小部件正常工作,但是当我尝试实现按钮的代码来打开网站时,它会杀死窗口小部件并在手机上显示“加载小工具的问题”。我是制作小部件/应用程序的新手,所以任何建议都值得赞赏。 如何使小部件工作?

这是我的代码:

main.xml中

$<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/widget_frame_portrait"
>
    <TextView android:id="@+id/xmas"
        android:layout_toRightOf="@+id/refresh"
        android:layout_width="wrap_content"
        android:layout_height="50dip"
        android:text="@string/hello"
        android:layout_marginTop="37dip"
        android:layout_marginBottom="25dip"

        android:layout_marginRight="5dip"

        android:orientation="vertical"
        android:textColor="#000000"/>

    <ImageButton
        android:layout_height="50dip"
        android:id="@+id/refresh"
        android:background="@drawable/feep"
        android:layout_width="225dip"
        android:layout_marginTop="25dip"
        android:layout_marginBottom="25dip"
        android:layout_marginLeft="25dip"
        android:layout_marginRight="1dip"
        android:orientation="horizontal"

        android:clickable="true"
        android:onClick="openWebUrl"
    />
</RelativeLayout>

我唯一的活动叫做bGiving.Java:

$package chris.days.to;

import android.app.Activity;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.Button;

public class bGiving extends Activity implements View.OnClickListener  {

    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                         int[] appWidgetIds) {

    }

    public void openWebURL(View v) {
        String url = "http://google.com";

        Intent i = new Intent(Intent.ACTION_VIEW);

        i.setData(Uri.parse(url));

        startActivity(i);
    }

    public void onClick(View v) {

    }
}

and my Android Manifest is:

    $<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="chris.days.to"
      android:versionCode="1"
      android:versionName="1.0">
        <uses-sdk android:minSdkVersion="4" />

        <application android:icon="@drawable/icon" android:label="@string/app_name">

            <receiver android:name=".DaysToXmas" android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                </intent-filter>
                <meta-data android:name="android.appwidget.provider"
                           android:resource="@xml/hello_widget_provider" />
            </receiver>

            <activity android:name=".bGiving"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

        </application>
    </manifest>

当我在main.xml“android:onClick =”openWebUrl“中添加代码时,它会杀死小部件。

1 个答案:

答案 0 :(得分:1)

PendingIntent设置为Button。这将导致在Intent被按下时执行Button

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(data);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    remoteView.setOnClickPendingIntent(R.id.button, pendingIntent);