android清除数据后widget无法更新问题修改

清除数据时会发送ACTION_PACKAGE_DATA_CLEARED广播,在widgetProvider里面监听该广播并进行处理就可以了

 public static class PackageDataClearedReceiver extends BroadcastReceiver {
        private static final String ACTION_PACKAGE_DATA_CLEARED = "com.mediatek.intent.action.SETTINGS_PACKAGE_DATA_CLEARED";

        public void onReceive(Context context, Intent intent) {
            if (!ACTION_PACKAGE_DATA_CLEARED.equals(intent.getAction())) {
                return;
            }
            String pkgName = intent.getStringExtra("packageName");
            MusicLogUtils.v(TAG, "PackageDataClearedReceiver recevied pkgName = " + pkgName);
            if (pkgName != null && pkgName.equals(context.getPackageName())) {
                MediaAppWidgetProvider mediaAppWidgetProvider = MediaAppWidgetProvider
                        .getInstance();
                if (mediaAppWidgetProvider == null) {
                    MusicLogUtils.v(TAG, "mediaAppWidgetProvider is null ");
                    return;
                }
                mediaAppWidgetProvider.defaultAppWidget(context, null);
            }
        }

    }

defaultAppWidget()函数会重新加载widget信息和布局文件,这样就可以恢复默认值了。

最后别忘了在AndroidManefest.xml里面加上:

        <receiver android:name="com.android.music.MediaAppWidgetProvider$PackageDataClearedReceiver" >
            <intent-filter>
                <action android:name="com.mediatek.intent.action.SETTINGS_PACKAGE_DATA_CLEARED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
时间: 2024-10-13 16:20:08

android清除数据后widget无法更新问题修改的相关文章

Android SDK安装后错误或不完整的解决方法

1.Android SDK安装后没有可更新包的列表? 找到SDK的安装目录,D:\Android\android-sdk 运行DK Manager.exe打开后在菜单Tools->Options 然后在Others框中,把那几个色打上(使用http而不是安全链接https,否则谷歌网站会拒绝) 2.Android SDK安装后,更新时经常断网出错? 打开文件夹C:\Windows\System32\drivers\etc 找到hosts文件,用记事本打开,在末尾加以下内容: 127.0.0.1

android 卸载程序、清除数据、停止服务用法

要实现卸载程序.清除数据.停止正在执行的服务这几大模块,如今将代码粗略总结例如以下: 主要运用到的类有 PackageManager ActivityManager ApplicationInfo RunningServiceInfo Method 还有两个android.pm下的源文件用于生成桩,IPackageStatsObserver.java 和 IPackageDataObserver.java,由名字能够看出,他们是跟包的状态和大小有关的,在网上找到这两个文件的源代码后,把他们放在p

android 卸载程序、清除数据、停止服务使用方法

要实现卸载程序.清除数据.停止正在运行的服务这几大模块,现在将代码粗略总结如下: 主要运用到的类有 PackageManager ActivityManager ApplicationInfo RunningServiceInfo Method 还有两个android.pm下的源文件用于生成桩,IPackageStatsObserver.java 和 IPackageDataObserver.java,由名字可以看出,他们是跟包的状态和大小有关的,在网上找到这两个文件的源码后,把他们放在工程sr

android实现 彻底退出应用/清除数据/卸载应用的方法

清楚应用数据和卸载应用,直接执行命令: * String cmd = "pm clear " + packageName; 或者 * String cmd = "pm clear " + packageName  + " HERE"; * String cmd = "pm uninstall " + packageName; 或者 * String cmd = "pm uninstall " + packa

求代码:android listview checkbox 从数据库里读取数据后怎么设置相应的checkbox为选中状态

============问题描述============ 现在有一个android listview 带checkbox,从数据库里调取相应数据后,绑定到listview 上. 那么怎么将listview 里的checkbox的选择状态与在数据库中记录一一对应? 求给出代码. 我在自定义BaseAdapter类中,getView方法中无法实现. ============解决方案1============ 这样 你点击的时候 是不是 会获取一个view  通过这个view 获取你那个 checkb

android 清除其他应用数据

在调试某应用的时候,经常要清除apk初始化产生的数据,初始化会在/data/data/com.xxx.xx目录下和/sdcard/下新建很多文件,每次都要点到 设置->应用->软件名->清除数据.闲操作麻烦,想使用自动化一键清除. 0x1 穷举遍历删除文件夹 开始想到的是获取su权限后枚举/data/data/com.xx.xx目录下的文件夹,逐个删除文件夹 1 public static boolean removeAppData( String packageName ) 2 { 3

Android实现多次闪退清除数据

背景 很多时候由于后台返回的数据异常,可能会导致App闪退.而如果这些异常数据被App本地缓存下来,那么即使杀掉进程重新进入还是会发生闪退.唯一的解决方法就是清除App数据,但是用户可能没有这个意识或者嫌麻烦就直接不再使用了,这是我们无法接受的.在使用淘宝.追书神器等App时我发现有时候它们也会连续闪退,但是往往闪退三次后就恢复正常了,所以一般成熟的App都会做连续闪退三次后清除缓存数据的工作.而目前笔者搜不到有哪篇blog来讲这方面的事情,所以就姑且由我来讲讲此事,为希望提高App用户体验的朋

企业运维之域控篇(九)--辅助域强制占用后的操作--清除数据

----------------------------------------------------------- 企业运维之域控篇(九)--辅助域强制占用后的操作--清除数据  企业运维之域控篇(八)--辅助域控升级为主域控之一(阴谋)  企业运维之域控篇(八)--辅助域控升级为主域控之一(阳谋) 企业运维之域控篇(七)--创建辅助域 企业运维之域控篇(六)--更改域密码复杂性方法 企业运维之域控篇(五)--域的状态还原 企业运维之域控篇(四)--域的状态备份 企业运维之域控篇(三)--加

[转]MFC子线程更改图像数据后更新主窗口图像显示方法

程序思路是由外部的输入输出控制卡发出采集图像信号,之后相机采集图像得到图像数据指针,接收图像数据指针创建成图像最后显示到MFC对话框应用程序的Picture Control控件上,同时,为了标定相机位置,在主对话框类CMyDlg的OnPaint函数中有对Picture Control的绘图操作(不改变图像数据,进行画线,画矩形等操作). 设计时考虑到I/O卡何时发出采集信号或者相机何时得到图像数据指针是不确定的(不使用OnTime),同时考虑到I/O卡和相机的回调函数与主程序之间的数据交换会更加