Android 使用file.delete()后,文件仍在手机存储器中,长度为零
当我重新打开时,我的应用程序文件存在且长度为零。Android 使用file.delete()后,文件仍在手机存储器中,长度为零,android,Android,当我重新打开时,我的应用程序文件存在且长度为零。 如何永久删除它 我正在使用列表视图显示外部存储器中使用Media Store的所有歌曲,并在其中添加了删除选项 删除文件后,当我重新打开我的应用程序时,歌曲文件再次出现在列表视图中,但文件长度为零 有关删除内容,请参见onClickListener: public class TracksFragment extends Fragment { songDetailloader loader = new songDetailloader()
如何永久删除它 我正在使用列表视图显示外部存储器中使用Media Store的所有歌曲,并在其中添加了删除选项 删除文件后,当我重新打开我的应用程序时,歌曲文件再次出现在列表视图中,但文件长度为零 有关删除内容,请参见
onClickListener
:
public class TracksFragment extends Fragment {
songDetailloader loader = new songDetailloader();
ArrayList<Songs> give = new ArrayList<>();
public int pos = -1;
MediaPlayer mp ;
MusicService musicService;
boolean mBound;
Context context;
public TracksFragment() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState)
{
View v =inflater.inflate(R.layout.listviewofsongs,container,false);
final ListView listView = (ListView) v.findViewById(R.id.listView);
loader.set(getContext());
give = loader.allsongs();
final ListViewAdapter listViewAdapter = new ListViewAdapter(getContext(),give);
listView.setAdapter(listViewAdapter);
listView.setSelector(R.drawable.selector);
new Thread(new Runnable() {
@Override
public void run() {
Intent i = new Intent(getActivity(),MusicService.class);
getActivity().bindService(i, serviceConnection, Context.BIND_AUTO_CREATE);
}
}).start();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Log.d("Uri of ",""+give.get(position).getSonguri());
musicService.setplaylist(give,position);
musicService.setMediaPlayer();
view.setSelected(true);
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View v =LayoutInflater.from(getContext()).inflate(R.layout.select_dialog_layout,null);
builder.setView(v);
builder.setTitle(give.get(position).gettitle()+"\n "+give.get(position).getalbum());
builder.create();
final AlertDialog d=builder.show();
//seting click listner.....
TextView play = (TextView) v.findViewById(R.id.dialogplay);
TextView playnext = (TextView) v.findViewById(R.id.dialogplaynext);
TextView queue = (TextView) v.findViewById(R.id.dialogqueue);
TextView fav = (TextView) v.findViewById(R.id.dialogaddtofav);
TextView album = (TextView) v.findViewById(R.id.dialogalbum);
TextView artist = (TextView) v.findViewById(R.id.dialogartist);
TextView playlist = (TextView) v.findViewById(R.id.dialogaddtoplaylsit);
TextView share = (TextView) v.findViewById(R.id.dialogshare);
TextView delete = (TextView) v.findViewById(R.id.dialogdelete);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File f= new File(give.get(position).getSonguri().getLastPathSegment());
Log.d("LENGTH IS",""+f.length());
musicService.setplaylist(give,position);
musicService.setMediaPlayer();
d.dismiss();
}
});
playnext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
}
});
queue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
}
});
fav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
DataBaseClass db = new DataBaseClass(getContext());
int i=db.insetintoliked(give.get(position));
if(i==1)
{
Toast.makeText(getContext(),"Added to Favorites",Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(getContext(),"Already in Favorites",Toast.LENGTH_SHORT).show();
}
});
album.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
Intent i = new Intent( getActivity() , AlbumDetail.class);
Bundle b= new Bundle();
b.putCharSequence("album",give.get(position).getalbum());
i.putExtras(b);
startActivity(i);
}
});
artist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
}
});
playlist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
}
});
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder b = new AlertDialog.Builder(getContext());
b.setMessage("Audio '"+give.get(position).gettitle()+"' will be deleted permanently !");
b.setTitle("Delete ?");
b.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
d.dismiss();
}
});
b.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
loader.deleteSong(getContext(),give.get(position).getPosition());
File f= new File(give.get(position).getSonguri().getPath());
boolean b = f.delete();
Log.d("Is file exist",f.exists()+"");
Log.d("File Length",""+f.length());
Log.d("Return value",""+b);
give.remove(position); // give is Arraylist of Songs(datatype);
listViewAdapter.notifyDataSetChanged();
if(b)
{
Toast.makeText(getContext(),"Deleted",Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getContext(),"Fail to Delete",Toast.LENGTH_SHORT).show();
}
}
});
b.create().show();
d.dismiss();
}
});
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
d.dismiss();
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("audio/*");`enter code here`
share.putExtra(Intent.EXTRA_STREAM, give.get(position).getSonguri());
startActivity(Intent.createChooser(share, "Share Sound File"));
}
});
return true;
}
});
container.addView(v);
return v;
}
}
实际文件是否存在(通过文件浏览器),或者是否存在,因为您尚未更新MediaStore,并且MediaStore有一个孤立条目?f.exists()的输出是什么??欢迎!如果您有一些代码可以帮助您解答问题,请将其作为MCVE复制到您的问题中。使用正确的格式标记代码(一行空白,然后将代码缩进四个空格)。更多关于StackOverflow markdown:和MCVE:当我再次尝试删除之前删除的同一个歌曲文件时,会生成这些日志。问题是为什么在第一次尝试时此文件未被完全删除。并且关于此文件的所有元数据仍然存在。f.exists()在第一次尝试时返回true,在第二次尝试时返回false,因为日志catIs中存在实际文件(通过文件浏览器),或者是因为您没有更新MediaStore,并且MediaStore有一个孤立项?f.exists()的输出是什么??欢迎!如果您有一些代码可以帮助您解答问题,请将其作为MCVE复制到您的问题中。使用正确的格式标记代码(一行空白,然后将代码缩进四个空格)。更多关于StackOverflow markdown:和MCVE:当我再次尝试删除之前删除的同一个歌曲文件时,会生成这些日志。问题是为什么在第一次尝试时此文件未被完全删除。并且关于该文件的所有元数据仍然存在。f.exists()在第一次尝试时返回true,在第二次尝试时返回false,如log cat中所示
01-14 05:19:54.189 18010-18010/com.developmentforfun.mdnafiskhan.mp3player D/Is file exist: false
01-14 05:19:54.190 18010-18010/com.developmentforfun.mdnafiskhan.mp3player D/File Lenth:0
01-14 05:19:54.190 18010-18010/com.developmentforfun.mdnafiskhan.mp3player D/Return value: false