1

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

这是我的代码:

主.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" 中添加代码时,它会杀死小部件。

4

1 回答 1

1

将 a 设置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);
于 2011-06-05T04:09:56.190 回答