2013-09-27 43 views
1

我有一个简单的应用程序,我想运行从活动之一,不完全的主要活动应用一个主屏幕小部件(图像)。 我没有任何错误,在编译,运行应用程序或安装它,但小部件没有安装无论是在平板电脑或手机,我使用的测试。 所以......这就是我正在做的。主屏幕小部件不会安装

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> 

widget_layout

<?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

内应用的接收器

我是否需要添加任何许可或类似的东西,或者也许这个“机器人:的installLocation =” preferExternal“”是导致冲突?

(我运行在一台联想标签白衣ICS和LG 3D-Max的国标测试)

我明天就需要,请帮助。 :d

+0

请问您的logcat说什么,当你尝试添加设备上的小工具? –

+0

我是。试图通过在主屏幕中点击来添加小部件,但它不在列表中 – Aiapaec

回答

1

这是为移动应用程序的设备那样简单......它被安装到SD因为这个

android:installLocation="preferExternal" 

请记住,如果应用程序是在小部件只能安装内存。

1

的问题可能是你没有正确地宣布你的AppWidgetProvider。

作为每App Widgets导向,

的元素需要机器人:名称属性,该属性指定 由应用窗口小部件中使用的的AppWidgetProvider。

您的AppWidgetProvider被称为MyWidgetProvider,但是您的清单显示为<receiver android:name="Detente" >。将其更改为<receiver android:name="MyWidgetProvider" >可能会解决您的问题。

我还没有看到在AppWidgetManager documentationACTION_WIDGET_RECEIVER。那个是从哪里来的?该文件表明只需要APPWIDGET_UPDATE

+0

已更改它,但小部件仍然在列表中丢失。 – Aiapaec

+0

我已经更新了我的答案,以包含有关您的“ACTION_WIDGET_RECEIVER”的注释,这也可能会导致问题。 –

+0

谢谢!但仍然没有工作。 – Aiapaec