2012-06-03 73 views
1

我想在用戶更改小部件設置時更新SmartWatch小部件。 我知道這可以通過發送WIDGET_IMAGE_UPDATE_INTEN意圖完成,但似乎我沒有主機應用程序包名稱(即com.sonyericsson.extras.smartwatch)的信息。Sony SmartWatch - 如何獲取主機應用程序包名稱

如何獲得「主機應用程序包名稱」? PS:目前,我硬連線我的代碼中的「com.sonyericsson.extras.smartwatch」名稱。

+1

我不能編輯你的問題是由於另一個掛起的編輯。如果我理解正確,我建議您添加'smartwatch'標籤,因爲索尼正在監控SmartWatch技術支持。 – CommonsWare

回答

3

每次您的小部件擴展程序收到主機應用程序的意圖時,主機應用程序的程序包名稱都將作爲附加意圖包含在內。

String hostAppPackageName = intent.getStringExtra(Widget.Intents.EXTRA_AHA_PACKAGE_NAME); 

您可以存儲包名,以便以後在代碼中使用。這也是如何在SDK的實用工具類中完成的,即它在抽象類ExtensionService中存儲爲全局變量,由SDK中的所有示例擴展使用。

看一看的SDK工具類here

+0

在CONFIGURATION_ACTIVITY PreferenceActivity(由LiveManager> Applications> my_app> Settings調用)中,我想在用戶更改設置時更新SmartWatch小部件。我嘗試調用getIntent()。getStringExtra(Widget.Intents.EXTRA_AHA_PACKAGE_NAME),但只返回NULL。 –

+1

小部件第一次從主機應用程序獲取意圖時,例如當它被創建時,您可以存儲主機包名稱。可以將其存儲爲全局變量,也可以將其存儲在共享首選項中。如果您將其存儲在共享首選項中,則可以在要刷新小部件時通過PreferenceActivity訪問它。否則,你可以在pref.activity和你的ExtensionService之間做一些奇特的交互。 – Jerker

相關問題