我正在编写一个可以改变屏幕亮度的应用程序。我还使用第三方小部件,它们都会改变屏幕亮度并显示当前的亮度值。我的程序和第三方小部件具有不同的功能,我想继续使用它们。但是,当我的应用程序更改屏幕亮度时,第三方窗口小部件不会自动刷新以反映此更改。所以,我的问题是:
我的应用程序是否可以调用第三方窗口小部件进行刷新?
如果是这样,是通过刷新手机上的每个小部件来完成的,还是可以定位该特定小部件(例如,按包名称)?
答案 0 :(得分:1)
我的应用程序是否可以调用第三方窗口小部件进行刷新?
不容易,而且根本不可能。
如果是这样,是通过刷新手机上的每个小部件来完成的吗
AFAIK,这是不可能的。
或者我可以定位该特定小部件(例如,按包名称)吗?
你在此事上别无选择。
这可行的唯一方法是,如果您使用系统用于更新第三方应用小部件的sendBroadcast()
调用Intent
。您需要指定其他应用ComponentName
的{{1}}。并且,您无法知道特定AppWidgetProvider
额外的应用小部件ID是什么。如果第三方Intent
期待您未提供此广播中的内容(例如,应用小部件ID),则可能会崩溃。也有可能这个广播是安全的,不能被其他应用程序发送 - 我从来没有试过这个。