区域覆盖所有的SD卡文件Programmaticaly [英] WipeOut All SdCard Files Programmaticaly
问题描述
我试图做消灭所有文件present外部SD卡的任务。
我没有得到我的地方code是行不通的。
请帮助我!
这些都是我的文件...
活性的main.xml
< XML版本=1.0编码=UTF-8&GT?;
<的LinearLayout机器人:方向=垂直
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
的xmlns:机器人=http://schemas.android.com/apk/res/android>
<按钮机器人:ID =@ + ID / wipe_button
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:文本=擦除SD卡。 />
< TextView的机器人:ID =@ + ID /路径
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT/>
< TextView的机器人:ID =@ + ID /文件
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT/>
< / LinearLayout中>
WipeSdActivity.java
包com.example.wipe_sd;
进口的java.io.File;
进口的java.util.ArrayList;
进口java.util.Iterator的;
进口的java.util.List;
进口android.app.Activity;
进口android.app.AlertDialog;
进口android.content.DialogInterface;
进口android.os.AsyncTask;
进口android.os.Bundle;
进口android.os.Environment;
进口android.util.Log;
进口android.view.Menu;
进口android.view.View;
进口android.widget.Button;
进口android.widget.TextView;
公共类WipeSDActivity延伸活动{
私人诠释mDeletedFiles = 0;
私人诠释mDeletedFolders = 0;
私人TextView的mDirectoryTextView;
私人TextView的mFileTextView;
私人列表<字符串> mUndeleteableFiles;
MyAsyncTask测试;
公众按钮btnwipe_sd;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_wipe_sd);
btnwipe_sd =(按钮)findViewById(R.id.wipe_button);
测试=新MyAsyncTask();
文件[] arrayOfFile =新的文件[1];
arrayOfFile [0] =新的文件(Environment.getExternalStorageDirectory()getPath());
test.execute(arrayOfFile);
btnwipe_sd.setOnClickListener(新View.OnClickListener()
{
公共无效的onClick(查看paramAnonymousView)
{
新AlertDialog.Builder(WipeSDActivity.this).setCancelable(真)
.setMessage(这将试图擦去你的SD卡中的所有目录和文件。)
.setPositiveButton(消灭,新DialogInterface.OnClickListener()
{
公共无效的onClick(DialogInterface对话,诠释其)
{
}
})。setNegativeButton(NO!,新DialogInterface.OnClickListener()
{
公共无效的onClick(DialogInterface对话,诠释其)
{
dialog.dismiss();
}
})。显示();
}
});
this.mDirectoryTextView =((TextView中)findViewById(R.id.path));
this.mFileTextView =((TextView中)findViewById(R.id.file));
this.mUndeleteableFiles =新的ArrayList();
}
公共类MyAsyncTask扩展的AsyncTask<文件,整数,整数GT; {
保护整数doInBackground(文件[] ArrayOfFile){
// TODO自动生成方法存根
INT I = 0;
progressivelyDelete(ArrayOfFile [0]);
如果(ArrayOfFile [0] .exists())
I = ArrayOfFile [0] .listFiles()的长度。
返回Integer.valueOf(ⅰ);
}
私人无效progressivelyDelete(文件sd_File){
// TODO自动生成方法存根
如果(sd_File == NULL);
而(真)
{
如果(sd_File.isDirectory())
{
updateDirectory(sd_File.getPath());
文件[] arrayOfFile = sd_File.listFiles();
INT I = arrayOfFile.length;
INT J = 0;
如果(J<我)
{
文件msd_File = arrayOfFile [J]。
如果(msd_File.canWrite())
progressivelyDelete(msd_File);
而(真)
{
J ++;
打破;
}
WipeSDActivity.this.mUndeleteableFiles.add(msd_File.getAbsolutePath());
}
sd_File.delete();
}
其他
{
sd_File.delete();
updateFile(sd_File.getName());
}
}
}
私人无效updateFile(最后字符串中的paramString){
// TODO自动生成方法存根
Log.d(SdWipe,文件 - +的paramString);
WipeSDActivity.this.runOnUiThread(新的Runnable(){
@覆盖
公共无效的run(){
// TODO自动生成方法存根
TextView的localfile_TextView = WipeSDActivity.this.mFileTextView;
[对象] arrayofObject =新的对象[1];
arrayofObject [0] =的paramString;
}
});
}
私人无效updateDirectory(最后字符串中的paramString){
// TODO自动生成方法存根
Log.d(SdWipe,文件夹 - +中的paramString);
WipeSDActivity.this.runOnUiThread(新的Runnable(){
@覆盖
公共无效的run(){
// TODO自动生成方法存根
TextView的localdir_TextView = WipeSDActivity.this.mDirectoryTextView;
[对象] arrayOfObject =新的对象[1];
arrayOfObject [0] =的paramString;
localdir_TextView.setText(的String.Format(当前正在处理\ N%的,arrayOfObject));
}
});
}
保护无效onPostExecute(整数paramInteger)
{
TextView的dir_textview = WipeSDActivity.this.mDirectoryTextView;
[对象] arrayOfObject =新的对象[2];
arrayOfObject [0] = Integer.valueOf(WipeSDActivity.this.mDeletedFolders);
arrayOfObject [1] = Integer.valueOf(WipeSDActivity.this.mDeletedFiles);
dir_textview.setText(的String.Format(完成的\ n%s的文件夹中删除\ñ%s的文件删除,arrayOfObject));
StringBuilder的localStringBuilder =新的StringBuilder();
迭代器localIterator = WipeSDActivity.this.mUndeleteableFiles.iterator();
而(localIterator.hasNext())
{
字符串str =(字符串)localIterator.next();
localStringBuilder.append(STR +\ N);
}
WipeSDActivity.this.mFileTextView.setText(留在SD卡上的文件:\ NparamInteger + + localStringBuilder);
}
在preExecute保护无效()
{
WipeSDActivity.this.mUndeleteableFiles.clear();
}
}
}
的Manifest.xml
< XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.example.wipe_sd
安卓版code =1
机器人:VERSIONNAME =1.0>
<用途-SDK
安卓的minSdkVersion =8
机器人:targetSdkVersion =18/>
<使用-权限的Android:名称=android.permission.WRITE_EXTERNAL_STORAGE/>
<应用
机器人:allowBackup =真
机器人:图标=@可绘制/ ic_launcher
机器人:标签=@字符串/ APP_NAME
机器人:主题=@风格/ AppTheme>
<活动
机器人:名称=com.example.wipe_sd.WipeSDActivity
机器人:标签=@字符串/ APP_NAME>
<意向滤光器>
<作用机器人:名称=android.intent.action.MAIN/>
<类机器人:名称=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
< /活性GT;
< /用途>
< /舱单>
日志猫错误我得到的是:
02-08 16:47:13.460:E / AndroidRuntime(270):java.lang.RuntimeException的:无法启动的活动
ComponentInfo {com.example.wipe_sd / com.example.wipe_sd.WipeSDActivity}:显示java.lang.NullPointerException
02-08 16:47:13.460:E / AndroidRuntime(270):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.app.ActivityThread.access $ 2300(ActivityThread.java:125)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.os.Handler.dispatchMessage(Handler.java:99)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.os.Looper.loop(Looper.java:123)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.app.ActivityThread.main(ActivityThread.java:4627)
02-08 16:47:13.460:E / AndroidRuntime(270):在java.lang.reflect.Method.invokeNative(本机方法)
02-08 16:47:13.460:E / AndroidRuntime(270):在java.lang.reflect.Method.invoke(Method.java:521)
02-08 16:47:13.460:E / AndroidRuntime(270):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
02-08 16:47:13.460:E / AndroidRuntime(270):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-08 16:47:13.460:E / AndroidRuntime(270):在dalvik.system.NativeStart.main(本机方法)
02-08 16:47:13.460:E / AndroidRuntime(270):由:显示java.lang.NullPointerException
02-08 16:47:13.460:E / AndroidRuntime(270):在com.example.wipe_sd.WipeSDActivity $ MyAsyncTask.on preExecute(WipeSDActivity.java:204)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.os.AsyncTask.execute(AsyncTask.java:391)
02-08 16:47:13.460:E / AndroidRuntime(270):在com.example.wipe_sd.WipeSDActivity.onCreate(WipeSDActivity.java:44)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-08 16:47:13.460:E / AndroidRuntime(270):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
02-08 16:47:13.460:E / AndroidRuntime(270):11 ...更多
在这里,我修改了 WipeSDActivity.java class.Please检查,并让我know.Hope它应该对你有帮助。谢谢你。
进口的java.io.File;
进口android.app.Activity;
进口android.app.AlertDialog;
进口android.app.ProgressDialog;
进口android.content.DialogInterface;
进口android.os.Bundle;
进口android.os.Environment;
进口android.os.Handler;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;
公共类WipeSDActivity延伸活动{
私有静态ProgressDialog进度;
私有静态诠释progressBarStatus = 0;
私有静态处理程序progressBarHandler =新的处理程序();
公众按钮btnwipe_sd;
私人诠释fileCount = 0;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.sd_card);
btnwipe_sd =(按钮)findViewById(R.id.wipe_button);
btnwipe_sd.setOnClickListener(新OnClickListener()
{
公共无效的onClick(最终查看查看)
{
新AlertDialog.Builder(WipeSDActivity.this).setCancelable(真)
.setMessage(这将试图擦去你的SD卡中的所有目录和文件。)
.setPositiveButton(消灭,新DialogInterface.OnClickListener()
{
公共无效的onClick(DialogInterface对话,诠释其)
{
dialog.dismiss();
FormatSDCard(视图);
}
})。setNegativeButton(NO!,新DialogInterface.OnClickListener()
{
公共无效的onClick(DialogInterface对话,诠释其)
{
dialog.dismiss();
}
})。显示();
}
});
}
公共无效FormatSDCard(视图v){
进度=新ProgressDialog(v.getContext());
progressBar.setCancelable(假);
progressBar.setMessage(文件删除......);
progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressBar.setProgress(0);
progressBar.setMax(100);
progressBar.show();
新主题(新的Runnable(){
公共无效的run(){
而(progressBarStatus< 100){
// fileCount = 0;
//过程中的一些任务
progressBarStatus = wipingSdcard();
//你的电脑是太快了,睡眠1秒
尝试 {
视频下载(1000);
}赶上(InterruptedException异常E){
e.printStackTrace();
}
//更新进度条
progressBarHandler.post(新的Runnable(){
公共无效的run(){
progressBar.setProgress(progressBarStatus);
}
});
}
// OK,文件被删除,
如果(progressBarStatus> = 100){
//睡眠2秒,这样您就可以看到100%
尝试 {
视频下载(2000);
}赶上(InterruptedException异常E){
e.printStackTrace();
}
//关闭进度条对话框
progressBar.dismiss();
}
}
})。开始();
}
公众诠释wipingSdcard(){
文件deleteMatchingFile =新的文件(环境
。.getExternalStorageDirectory()的toString());
尝试 {
文件[]文件名= deleteMatchingFile.listFiles();
如果(文件名=空&安培;!&安培; filenames.length大于0){
对于(文件临时文件:文件名){
如果(tempFile.isDirectory()){
wipeDirectory(tempFile.toString());
tempFile.delete();
} 其他 {
tempFile.delete();
}
fileCount ++;
progressBarStatus = fileCount;
progressBarHandler.post(新的Runnable(){
公共无效的run(){
progressBar.setProgress(progressBarStatus);
}
});
}
} 其他 {
deleteMatchingFile.delete();
}
}赶上(例外五){
e.printStackTrace();
}
返回fileCount;
}
私人无效wipeDirectory(字符串名称){
文件directoryFile =新的文件(名称);
文件[]文件名= directoryFile.listFiles();
如果(文件名=空&安培;!&安培; filenames.length大于0){
对于(文件临时文件:文件名){
如果(tempFile.isDirectory()){
wipeDirectory(tempFile.toString());
tempFile.delete();
} 其他 {
tempFile.delete();
}
}
} 其他 {
directoryFile.delete();
}
}
}
你也得给的权限,如果你使用的是> 1.6 SDK
<使用-权限的Android:名称=android.permission.READ_EXTERNAL_STORAGE/>
<使用-权限的Android:名称=android.permission.WRITE_EXTERNAL_STORAGE/>
在 AndroidManifest.xml中文件
I am trying to do a Task of Wipe Out all the files present in the external SdCard.
I am not getting where my code is not working.
Please Help me !!!
These are my Files ...
activity-main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:id="@+id/wipe_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Wipe the SD card." />
<TextView android:id="@+id/path"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView android:id="@+id/file"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
WipeSdActivity.java
package com.example.wipe_sd;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class WipeSDActivity extends Activity {
private int mDeletedFiles = 0;
private int mDeletedFolders = 0;
private TextView mDirectoryTextView;
private TextView mFileTextView;
private List<String> mUndeleteableFiles;
MyAsyncTask test;
public Button btnwipe_sd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wipe_sd);
btnwipe_sd = (Button)findViewById(R.id.wipe_button);
test = new MyAsyncTask();
File[] arrayOfFile = new File[1];
arrayOfFile[0] = new File(Environment.getExternalStorageDirectory().getPath());
test.execute(arrayOfFile);
btnwipe_sd.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramAnonymousView)
{
new AlertDialog.Builder(WipeSDActivity.this).setCancelable(true)
.setMessage("This will attempt to wipe all directories and files on your SD card.")
.setPositiveButton("WIPE", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
}
}).setNegativeButton("NO!", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
}).show();
}
});
this.mDirectoryTextView = ((TextView)findViewById(R.id.path));
this.mFileTextView = ((TextView)findViewById(R.id.file));
this.mUndeleteableFiles = new ArrayList();
}
public class MyAsyncTask extends AsyncTask<File,Integer,Integer>{
protected Integer doInBackground(File[] ArrayOfFile) {
// TODO Auto-generated method stub
int i = 0;
progressivelyDelete(ArrayOfFile[0]);
if (ArrayOfFile[0].exists())
i = ArrayOfFile[0].listFiles().length;
return Integer.valueOf(i);
}
private void progressivelyDelete(File sd_File) {
// TODO Auto-generated method stub
if (sd_File == null);
while (true)
{
if (sd_File.isDirectory())
{
updateDirectory(sd_File.getPath());
File[] arrayOfFile = sd_File.listFiles();
int i = arrayOfFile.length;
int j = 0;
if (j < i)
{
File msd_File = arrayOfFile[j];
if (msd_File.canWrite())
progressivelyDelete(msd_File);
while (true)
{
j++;
break;
}
WipeSDActivity.this.mUndeleteableFiles.add(msd_File.getAbsolutePath());
}
sd_File.delete();
}
else
{
sd_File.delete();
updateFile(sd_File.getName());
}
}
}
private void updateFile(final String paramString) {
// TODO Auto-generated method stub
Log.d("SdWipe", "File - " + paramString);
WipeSDActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
TextView localfile_TextView = WipeSDActivity.this.mFileTextView;
Object[] arrayofObject = new Object[1];
arrayofObject[0] = paramString;
}
});
}
private void updateDirectory(final String paramString) {
// TODO Auto-generated method stub
Log.d("SdWipe", "Folder - " + paramString);
WipeSDActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
TextView localdir_TextView = WipeSDActivity.this.mDirectoryTextView;
Object[] arrayOfObject = new Object[1];
arrayOfObject[0] = paramString;
localdir_TextView.setText(String.format("Currently processing\n%s", arrayOfObject));
}
});
}
protected void onPostExecute(Integer paramInteger)
{
TextView dir_textview = WipeSDActivity.this.mDirectoryTextView;
Object[] arrayOfObject = new Object[2];
arrayOfObject[0] = Integer.valueOf(WipeSDActivity.this.mDeletedFolders);
arrayOfObject[1] = Integer.valueOf(WipeSDActivity.this.mDeletedFiles);
dir_textview.setText(String.format("Done\n%s folders deleted\n%s files deleted",arrayOfObject));
StringBuilder localStringBuilder = new StringBuilder();
Iterator localIterator = WipeSDActivity.this.mUndeleteableFiles.iterator();
while(localIterator.hasNext())
{
String str = (String) localIterator.next();
localStringBuilder.append(str + "\n");
}
WipeSDActivity.this.mFileTextView.setText(paramInteger + "files left on SD Card:\n" + localStringBuilder);
}
protected void onPreExecute()
{
WipeSDActivity.this.mUndeleteableFiles.clear();
}
}
}
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wipe_sd"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.wipe_sd.WipeSDActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
The Log Cat Error I am getting is:
02-08 16:47:13.460: E/AndroidRuntime(270): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.wipe_sd/com.example.wipe_sd.WipeSDActivity}: java.lang.NullPointerException
02-08 16:47:13.460: E/AndroidRuntime(270): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.os.Handler.dispatchMessage(Handler.java:99)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.os.Looper.loop(Looper.java:123)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-08 16:47:13.460: E/AndroidRuntime(270): at java.lang.reflect.Method.invokeNative(Native Method)
02-08 16:47:13.460: E/AndroidRuntime(270): at java.lang.reflect.Method.invoke(Method.java:521)
02-08 16:47:13.460: E/AndroidRuntime(270): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-08 16:47:13.460: E/AndroidRuntime(270): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-08 16:47:13.460: E/AndroidRuntime(270): at dalvik.system.NativeStart.main(Native Method)
02-08 16:47:13.460: E/AndroidRuntime(270): Caused by: java.lang.NullPointerException
02-08 16:47:13.460: E/AndroidRuntime(270): at com.example.wipe_sd.WipeSDActivity$MyAsyncTask.onPreExecute(WipeSDActivity.java:204)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.os.AsyncTask.execute(AsyncTask.java:391)
02-08 16:47:13.460: E/AndroidRuntime(270): at com.example.wipe_sd.WipeSDActivity.onCreate(WipeSDActivity.java:44)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-08 16:47:13.460: E/AndroidRuntime(270): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
02-08 16:47:13.460: E/AndroidRuntime(270): ... 11 more
Here i modified the WipeSDActivity.java class.Please check and let me know.Hope it should helpful for you. Thanks.
import java.io.File;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class WipeSDActivity extends Activity {
private static ProgressDialog progressBar;
private static int progressBarStatus = 0;
private static Handler progressBarHandler = new Handler();
public Button btnwipe_sd;
private int fileCount = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sd_card);
btnwipe_sd = (Button)findViewById(R.id.wipe_button);
btnwipe_sd.setOnClickListener(new OnClickListener()
{
public void onClick(final View view)
{
new AlertDialog.Builder(WipeSDActivity.this).setCancelable(true)
.setMessage("This will attempt to wipe all directories and files on your SD card.")
.setPositiveButton("WIPE", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
FormatSDCard(view);
}
}).setNegativeButton("NO!", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
}).show();
}
});
}
public void FormatSDCard(View v){
progressBar = new ProgressDialog(v.getContext());
progressBar.setCancelable(false);
progressBar.setMessage("File deleting ...");
progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressBar.setProgress(0);
progressBar.setMax(100);
progressBar.show();
new Thread(new Runnable() {
public void run() {
while (progressBarStatus < 100) {
//fileCount = 0;
// process some tasks
progressBarStatus = wipingSdcard();
// your computer is too fast, sleep 1 second
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Update the progress bar
progressBarHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(progressBarStatus);
}
});
}
// ok, file is deleted,
if (progressBarStatus >= 100) {
// sleep 2 seconds, so that you can see the 100%
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// close the progress bar dialog
progressBar.dismiss();
}
}
}).start();
}
public int wipingSdcard() {
File deleteMatchingFile = new File(Environment
.getExternalStorageDirectory().toString());
try {
File[] filenames = deleteMatchingFile.listFiles();
if (filenames != null && filenames.length > 0) {
for (File tempFile : filenames) {
if (tempFile.isDirectory()) {
wipeDirectory(tempFile.toString());
tempFile.delete();
} else {
tempFile.delete();
}
fileCount++;
progressBarStatus = fileCount;
progressBarHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(progressBarStatus);
}
});
}
} else {
deleteMatchingFile.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
return fileCount;
}
private void wipeDirectory(String name) {
File directoryFile = new File(name);
File[] filenames = directoryFile.listFiles();
if (filenames != null && filenames.length > 0) {
for (File tempFile : filenames) {
if (tempFile.isDirectory()) {
wipeDirectory(tempFile.toString());
tempFile.delete();
} else {
tempFile.delete();
}
}
} else {
directoryFile.delete();
}
}
}
Also you have to give permission if you are using >1.6 SDK
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
in AndroidManifest.xml file
这篇关于区域覆盖所有的SD卡文件Programmaticaly的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!