2013-09-27 99 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