2012-06-13 27 views
0

如果我想通過CONTROL_START_REQUEST_INTENT動作向我的控制擴展傳遞一些數據(通過捆綁或其他),我可以做些什麼?Sony SmartWatch - 如何傳遞數據來控制擴展?

我沒有看到任何傳遞給ControlExtension類構造函數的Intent或Bundle對象。

+0

我推薦[這個問題](http://stackoverflow.com/questions/10971674/how-should-i-do-to-start-smartwatch-extension-from-the-program-code)和答案可見。 – tarosay

+0

@tarosay「這個問題」不回答我的問題。用戶可以通過點擊應用程序圖標或發送CONTROL_START_REQUEST_INTENT操作來調用ControlExtension。如果被動作意圖調用,我希望ControlExtension執行一些不同於用戶手動調用的行爲。這就是爲什麼我想用CONTROL_START_REQUEST_INTENT意圖將數據傳遞給ControlExtension。 –

回答

0

不幸的是,目前還沒有辦法知道用戶是否從手錶啓動了ControlExtension,或者您是否通過START_REQUEST意圖請求啓動。從主機應用程序發送的結果開始並不提供此類信息。

您可以通過在發送START_REQUEST意圖時設置標誌來解決此問題,然後您將知道(在某種程度上,當然不是100%)該擴展是通過請求而不是由用戶啓動的。這是一個解決方法,但正如我所說,不防水。

你能舉個例子說明你想完成什麼嗎?

+0

此替代方法不是一個好的解決方案。我在「2倍電池」應用程序中使用髒解決方案完成了此操作。 下面是一個示例,當手機的電池電量不足時,2x將使用CONTROL_START_REQUEST_INTENT在手錶上顯示控件擴展名並進行振動。如果用戶在振動時敲擊屏幕,則2x不會插入事件;否則會在onPause()上添加一個事件,以便稍後通知用戶。如果用戶手動調用控件擴展名,則不應啓用「自動添加事件」代碼。 –

0

難道你不能使用這個偏好嗎?

在使用START_REQUEST之前,請在擴展程序在請求中啓動的首選項中添加一個值,並從擴展代碼中檢查是否存在該值。

但是,IMO應該重新考慮你的應用邏輯。