2011-11-16 90 views
3

我正在开发一个Android应用程序,它在SD卡中创建一个文件夹并存储一些图像。我想在应用程序卸载时删除该文件夹。请指导我。如何在卸载应用程序时删除数据?

+0

可能重复[如何删除文件的上卸载的Android应用程序?(HTTP://计算器.com/questions/4977351/how-to-delete-a-files-on-uninstall-the-android-application) – CodeCaster

回答

0

使用API​​ 7级,下一个解释//为你需要运行BroadcasrReciver,包括您在AndroidManifest.xml文件接收

<receiver android:name="com.android.mobileasap.PackageChangeReceiver"> 
    <intent-filter> 
       <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
       <data android:scheme="package" /> 
      </intent-filter> 

//添加权限

<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" /> 

//在PackageChangeReceiver刚刚删除的文件,我删除doc文件在这下面的代码

public class PackageChangeReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
    //this.context=context; 
    Uri data = intent.getData(); 
    Log.d("hi", "Action: " + intent.getAction()); 
    Log.d("hi", "The DATA: " + data); 

    String action=intent.getAction(); 

    if(Intent.ACTION_PACKAGE_REMOVED.equalsIgnoreCase(action)) 
    { 

     String PATH = Environment.getExternalStorageDirectory() + "/mycontent_download/"; 
      File file = new File(PATH); 

      if (file.exists()) 
      { 
       String listOfFiles [] = file.list(); 
       if (listOfFiles!=null) 
       { 
        if (listOfFiles.length>0) 
        { 
         int size = listOfFiles.length; 
         for (int i=0; i<size; i++) 
         { 
          if (listOfFiles[i].substring(listOfFiles[i].length()-4, listOfFiles[i].length()).equalsIgnoreCase(".doc")) 
          { 
           File f1 = new File(PATH+listOfFiles[i]); 
           f1.delete(); 
          } 

         } 
        } 
        } 
       } 
+1

该广播被第三方应用触发,而不是您自己的。 – 2011-11-16 14:24:27

3

简单:不可能。

目前没有卸载事件,当您卸载自己的应用程序时触发get。因此,你无法以任何方式对此作出反应。

唯一的例外:将您的数据存储在由Context.getExternalFilesDir()Context.getExternalCacheDir()提供的文件夹中。当您的应用程序被卸载时,这些将被删除。

相关问题