2010-10-28 35 views
5

我有一個現有的Android應用程序。 我添加了一個簡單的小工具,它使用下列內容:模擬器中的Android小部件

  • 更新我的清單與<receiver>模塊,它提供關於我的AppWidgetProvider實現信息
  • 在水庫增加了一個新的XML文件/ XML與<appwidget-provider>元素包含高度/寬度/ updatePeriod/initialLayout /圖標/標籤屬性
  • 添加了一個簡單默認佈局與ImageViewTextView
  • 實現我AppWidgetProvider

當我構建並將其部署到模擬器時,我的Widget不會顯示在窗口小部件列表中。我錯過了一些「安裝」小部件的步驟嗎?我是否需要做任何特殊的事情才能讓它出現在模擬器中?

編輯: 這裏是我的清單接收器是什麼樣子:

<receiver android:name=".MyAppWidgetProvider" 
      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/my_appwidget_info" /> 
</receiver> 

,這裏是我的my_appwidget_info.xml是什麼樣子:

<?xml version="1.0" encoding="UTF-8"?> 
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:icon="@drawable/ic_logo" 
    android:label="MySampleApp" 
    android:minWidth="294dp" 
    android:minHeight="72dp" 
    android:updatePeriodMillis="86400000" 
    android:initialLayout="@layout/my_app_widget" > 
</appwidget-provider> 
+0

是否在實際設備上工作? – EboMike 2010-10-28 22:07:30

+0

不知道。我仍在等待設備出現。 – psychotik 2010-10-28 22:12:48

+1

您有沒有將應用程序安裝到您的(虛擬)SD卡上?清單中的安裝位置是什麼? – EboMike 2010-10-29 00:19:24

回答

6

是否在清單中的接收器標籤有適當的意圖 - 過濾器和元數據?它應該看起來像在documentation的例子:

<receiver android:name="MyAppWidgetProvider" > 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" 
       android:resource="@xml/my_appwidget_info" /> 
</receiver> 

接收器需要這兩個塊被確認爲一個應用程序窗口小部件。

編輯:<receiver>標籤還需要位於<application>標籤內。

+0

感謝,是它。 – psychotik 2010-10-28 23:18:17

+0

嗯,它看起來像你有一切必要的東西顯示在部件列表中。我將您提供的代碼複製到一個新項目中,並且該小部件顯示在列表中,您在部署時沒有發現任何錯誤? – tinja 2010-10-29 00:01:19

+0

不可以,沒有錯誤。我甚至試圖卸載我的應用程序並重新安裝。其他建議? – psychotik 2010-10-29 00:15:43

1

如果您的應用程序安裝在SD卡上,您的所有小部件將悄悄拒絕顯示在列表中。 (文檔明確指出,如果您在外部存儲上,則無法使用小部件)。

您可以轉到主屏幕中的設置,轉到應用程序,然後轉到您的應用程序。如果它提供給你「移動到手機」,那麼它在SD卡上。您可以將安裝位置設置爲internalOnly,以防止它進入SD卡。

如果你確實允許在SD卡上安裝(因爲用戶通常會要求這樣做),他們需要清楚的是他們在這種情況下不能擁有該小部件。如果應用程序位於SD卡上並且您想要使用該小部件,則必須先將應用程序移回內部存儲器,然後重置手機(!)。

+0

這是很好的信息 - 謝謝。但在我的模擬器中,我正在安裝到主內存。我甚至在沒有任何SD卡的情況下運行這個模擬器。 – psychotik 2010-10-29 01:21:17

-1

我有同樣的問題。事實證明,我不小心有兩個元數據資源XML文件在兩個不同的文件夾,我的「佈局」文件夾和我的「XML」文件夾。它首先在「佈局」中找到(空)資源,並將其用於其元數據。

這是一個愚蠢的錯誤,但要確保在接收器元數據標籤中只有一個名稱爲xml的文件。另外我認爲它應該總是在xml文件夾中。

-1

我有同樣的問題。 而我的問題是,我有/layout/main.xml文件,當我刪除它的小部件出現!

這聽起來像@ubzack的答案,但我認爲他談點別的東西[同一個XML文件名]

1

我有同樣的問題也是如此。有幾件事可以阻止它在不同型號上顯示。

1)必須有AppWidget-提供商和了minHeight設置minWidth在XML中,如果你刪除任何與那些在啓動仿真器,你的widget將不復存在。 2)某些型號有問題,如果你沒有在AppWidget提供商 3供應previewImage)某些型號可以有問題,如果你安裝在SD卡,而不是內部,但我還是喜歡安裝在SD卡上。 4)即使您不打算使用任何活動,某些模型也需要定義「主」和「啓動器」的「活動」。 (你可以簡單地做一個假的一個,上面寫着「這只是一個小部件的應用程序」 5)你必須有正確的您的清單設置如圖TinJa的答案。

我通過這次終於得到它在所有的模型和仿真器出現之前打了相當長一段時間,所以要耐心等待,請確保您不會錯過任何東西,並設置需要在那裏的值。請記住有些手機會緩存Widget列表,並且可能無法更新,除非您已啓動第一個活動或重新啓動手機。

希望有所幫助。

山姆

0

我有同樣的問題,我終於搞清楚了。通常當你模擬一個應用程序時,它有一個要加載的活動。對於僅支持小部件的應用程序,情況並非如此,但IDE仍然認爲您正在嘗試啓動一項活動。

要改變這種去你構建選項

Example

然後更改啓動選項沒有

Example

相關問題