2011-11-16 118 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()提供的文件夾中。當您的應用程序被卸載時,這些將被刪除。

相關問題