Android “小部件原因”;“未安装应用程序”;错误
我正在尝试为主屏幕创建我的第一个小部件。我已经在开发者网站上阅读了教程,在网络上搜索了教程、技巧和问题解决方案,但似乎仍然无法让它发挥作用 问题: 我可以毫无问题地运行应用程序。我还可以从菜单中选择应用程序的小部件(长时间单击主屏幕-->Android小部件-->可用小部件列表)。但是,当我选择我的小部件时,我会收到以下错误消息(作为祝酒词): “您的手机上未安装应用程序。” 这里是我的源代码: 舱单中的条目:Android “小部件原因”;“未安装应用程序”;错误,android,xml,android-layout,widget,runtime-error,Android,Xml,Android Layout,Widget,Runtime Error,我正在尝试为主屏幕创建我的第一个小部件。我已经在开发者网站上阅读了教程,在网络上搜索了教程、技巧和问题解决方案,但似乎仍然无法让它发挥作用 问题: 我可以毫无问题地运行应用程序。我还可以从菜单中选择应用程序的小部件(长时间单击主屏幕-->Android小部件-->可用小部件列表)。但是,当我选择我的小部件时,我会收到以下错误消息(作为祝酒词): “您的手机上未安装应用程序。” 这里是我的源代码: 舱单中的条目: <receiver android:name=".SubscriberStat
<receiver android:name=".SubscriberStateWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/subscriber_status_widget" />
</receiver>
<receiver android:name="SubscriberStateWidgetProvider" >
<intent-filter >
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/subscriber_status_widget" />
</receiver>
AppWidgetInfoProvider xml:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="40dp"
android:minHeight="40dp"
android:updatePeriodMillis="300000"
android:configure="de.xxx.SubscriberStateWidgetProvider">
</appwidget-provider>
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/subscriber_state_widget_layout"
android:minHeight="72dp"
android:minWidth="300dp"
android:updatePeriodMillis="300000" >
</appwidget-provider>
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/widget_margin">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/subscriberStateWidgetImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/acc_app_logo"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_margin="5dp" />
<TextView
android:id="@+id/subscriberStateWidgetTextViewLable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/subscriberStatusText"
android:layout_toRightOf="@+id/subscriberStateWidgetImage"
android:layout_alignTop="@+id/subscriberStateWidgetImage"
android:layout_marginLeft="5dp"/>
<TextView
android:id="@+id/subscriberStateWidgetTextViewInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/subscriberStateWidgetImage"
android:layout_below="@+id/subscriberStateWidgetTextViewLable"
android:layout_alignBottom="@+id/subscriberStateWidgetImage"
android:layout_marginLeft="5dp"
android:text="@string/subscriberStatusUnknown"/>
</RelativeLayout>
</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dip"
android:background="@drawable/myshape" >
<TextView
android:id="@+id/subscriberStateLable"
style="@android:style/TextAppearance.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/widgetImage"
android:layout_toRightOf="@+id/widgetImage"
android:gravity="center_horizontal|center_vertical"
android:layout_margin="4dip"
android:text="@string/subscriberStatusText" >
</TextView>
<TextView
android:id="@+id/update"
style="@android:style/TextAppearance.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/widgetImage"
android:layout_toRightOf="@+id/widgetImage"
android:gravity="center_horizontal|center_vertical"
android:layout_margin="4dip"
android:text="@string/subscriberStatusUnknown" >
</TextView>
</RelativeLayout>
AppWidgetProvider Klass:
public class SubscriberStateWidgetProvider extends AppWidgetProvider{
public String SUBSCRIBER_WIDGET_UPDATE = "subscriberWidgetUpdate";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
}
}
}
公共类SubscriberStateWidgetProvider扩展了AppWidgetProvider{
公共字符串订户\u小部件\u UPDATE=“subscriberWidgetUpdate”;
@凌驾
public void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,
int[]appWidgetIds){
//TODO自动生成的方法存根
onUpdate(上下文、appWidgetManager、AppWidgetId);
final int N=appWidgetIds.length;
//对属于此提供商的每个应用程序小部件执行此循环过程
对于(inti=0;i最终使其工作:-)仍然不确定,但问题出在哪里
以下是我的工作源代码:
舱单中的条目:
<receiver android:name=".SubscriberStateWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/subscriber_status_widget" />
</receiver>
<receiver android:name="SubscriberStateWidgetProvider" >
<intent-filter >
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/subscriber_status_widget" />
</receiver>
请参考下面的链接。这可能对您的问题有帮助。感谢您提供的链接。遗憾的是,它并没有解决我的问题。我已经为我的小部件指定了一个布局文件,并且在回答中也对链接进行了引用。我的所有活动都已在清单中注册,而我没有为我的小部件创建特殊活动。单击时,它应该(稍后)将用户转发到已激活的活动(通过应用程序打开时当前正在运行)