2013-04-08 113 views
0

我正在为图像附带的项目创建一个简单的应用程序,并且在按下按钮时,图像将变为手机的壁纸。如何在卸载时删除应用程序附带的所有图像

这个我已经做了,但我的项目,我需要的墙纸被删除,如果应用程序被卸载如何做到这一点?

+0

文章标题和内容是两回事。哪一个是真正的问题?删除所有图像或更改壁纸。你到底想做什么? – 2013-04-08 12:31:02

+0

好吧,如果您删除应用程序随附的图像,那么当其卸载后壁纸将会消失? – user2211271 2013-04-08 12:34:25

+0

我不认为这是可能的,据我所知即使图像从文件系统中删除,直到重新启动或SystemUI或Launcher(?)重新启动,壁纸仍然会存在。我不知道你能做些什么。 – 2013-04-08 12:37:50

回答

1

保存图像here当您卸载该应用程序在此文件夹都将被删除

+2

我认为当你将图片设置为壁纸时,android会创建自己的副本。删除原始图片不会取消设置。 – vikki 2013-04-08 12:45:35

+0

但至少它会被删除:) – 2013-04-08 13:04:36

+0

我认为你需要有最低版本8做到这一点即时通讯使用7,所以我可以使用这个答案 – user2211271 2013-04-08 13:08:41

0

如果你看一下为IntentACTION_PACKAGE_REMOVED Android的文件,你会看到这个广播的动作会被任何其他感兴趣的应用程序接收(其他应用程序,谁注册接收此广播),而不是您自己的应用程序。从developer.android.com站点

引用:

广播事件:一个现有的应用程序包已经从设备上除去 。数据包含软件包的名称。正在安装的 程序包未收到此Intent。

不幸的是,因为您的应用程序永远无法检测到它正在被删除,所以您无法触发某个特定功能,这会改变设备上的壁纸。如果有可能(它不是),一个简单的功能(代码如下)将显示选择壁纸选择器给用户。

Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); 
startActivity(Intent.createChooser(intent, "Select Wallpaper")); 

这是用户在卸载应用程序后必须手动更改的内容。这就是说,就删除所有应用程序创建的文件而言,让Android为您处理该问题。使用的根据API以下选项之一:

API更大8或更高:getExternalCacheDir

API 7或更小:getExternalStorageDirectory

像这样的事情会让你确定取决于设备API使用哪一个:

int currentAPIVersion = android.os.Build.VERSION.SDK_INT; 
if (currentAPIVersion >= android.os.Build.VERSION_CODES.ECLAIR) { 
    // USE getExternalStorageDirectory 
} else { 
    // USE getExternalCacheDir 
} 
相关问题