gpt4 book ai didi

android - 未安装主屏幕小部件

转载 作者:行者123 更新时间:2023-11-29 21:32:50 25 4
gpt4 key购买 nike

我有一个简单的应用程序,我想要一个主屏幕小部件(一个图像)从其中一个 Activity 运行应用程序,而不是主 Activity 。我在编译、运行应用程序或安装它时没有出现任何错误,但该小部件既没有安装在我用于测试的平板电脑上,也没有安装在手机上。所以...这就是我正在做的。

widget_info.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget_layout"
android:minHeight="146dp"
android:minWidth="146dp"
android:configure=".MyWidgetProvider"
android:widgetCategory="home_screen|keyguard"
android:previewImage="@drawable/ic_launcher"
android:updatePeriodMillis="3000" >
</appwidget-provider>

小部件布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="horizontal"
android:layout_width="146dp"
android:layout_height="146dp"
android:layout_margin="8dip"
android:background="@drawable/ic_launcher" >
</LinearLayout>

MyWidgetProvider.java

package com.project;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.widget.RemoteViews;

public class MyWidgetProvider extends AppWidgetProvider {


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


RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget_layout);

ComponentName myWidget = new ComponentName(context,MyWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(myWidget, remoteViews);


}
}

这是 AndroidManifest.xml 中应用程序内部的接收器

<receiver android:name="Detente" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.ACTION_WIDGET_RECEIVER"/>
</intent-filter>

<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>

我是否需要添加任何权限或类似的东西,或者这个“android:installLocation="preferExternal"”可能会导致冲突?

(我在带 ICS 的 Lenovo Tab 和带 GB 的 LG 3D-Max 上运行测试)

我明天需要这个,请帮忙。 :D

最佳答案

问题很可能是您没有正确声明您的 AppWidgetProvider。

根据 App Widgets指导,

The element requires the android:name attribute, which specifies the AppWidgetProvider used by the App Widget.

您的 AppWidgetProvider 名为 MyWidgetProvider ,但您的 list 显示 <receiver android:name="Detente" > .将其更改为 <receiver android:name="MyWidgetProvider" >可能会解决您的问题。

我也没有看到 ACTION_WIDGET_RECEIVERAppWidgetManager documentation .那个是从哪里来的?文档表明只有 APPWIDGET_UPDATE是必需的。

关于android - 未安装主屏幕小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19057418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com