我正在编写一个更改屏幕亮度的应用程序。我还使用了一个 3rd 方小部件,它既可以更改屏幕亮度,又可以显示当前亮度值。我的程序和第 3 方小部件具有不同的功能,我想继续使用它们。但是,当我的应用程序更改屏幕亮度时,第 3 方小部件不会自动刷新以反映此更改。所以,我的问题是:
我的应用程序是否可以调用第 3 方小部件进行刷新?
如果是这样,这是通过刷新手机上的每个小部件来完成的,还是我可以针对该特定小部件(例如,通过包名称)?
我正在编写一个更改屏幕亮度的应用程序。我还使用了一个 3rd 方小部件,它既可以更改屏幕亮度,又可以显示当前亮度值。我的程序和第 3 方小部件具有不同的功能,我想继续使用它们。但是,当我的应用程序更改屏幕亮度时,第 3 方小部件不会自动刷新以反映此更改。所以,我的问题是:
我的应用程序是否可以调用第 3 方小部件进行刷新?
如果是这样,这是通过刷新手机上的每个小部件来完成的,还是我可以针对该特定小部件(例如,通过包名称)?
我的应用程序是否可以调用第 3 方小部件进行刷新?
不容易,而且很可能根本不会。
如果是这样,这是通过刷新手机上的每个小部件来完成的吗
AFAIK,这是不可能的。
或者我可以定位那个特定的小部件(例如,通过包名称)?
在这件事上你别无选择。
这可能起作用的唯一方法是,如果您使用系统用于更新第三方应用程序小部件sendBroadcast()
的相同方式进行调用。Intent
您需要指定ComponentName
其他应用程序的AppWidgetProvider
. 而且,您无法知道该特定Intent
附加组件的应用小部件 ID 是什么。如果第三方AppWidgetProvider
在此广播中期待您未提供的某些内容(例如,应用小部件 ID),则它可能会崩溃。这个广播也有可能是安全的,不能被其他应用程序发送——我从来没有试过这个。