경로에서 이미지를 삭제하는 중 문제가 발생합니다. 갤러리에서 애플리케이션을 삭제할 때 정말로 혼란 스럽습니다. 이미지에서 이미지를 삭제할 때 문제가 발생합니다. 파일 위치의 외부 미디어뿐만 아니라 활동에서도 삭제할 수 있습니다.이미지 경로에서 이미지를 삭제하는 방법
3 일 후부터 시도해 보았지만 아직 해결 방법을 찾지 못했습니다. 나는
public class FullScreenViewActivity extends Activity {
private Utils utils;
private FullScreenImageAdapter adapter, image;
private ViewPager viewPager;
Button btnClose, btnShare, btnDelete;
private static Context mContext;
ContentResolver contentResolver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen_view);
viewPager = (ViewPager) findViewById(R.id.pager);
utils = new Utils(getApplicationContext());
Intent i = getIntent();
int position = i.getIntExtra("position", 0);
adapter = new FullScreenImageAdapter(FullScreenViewActivity.this,
utils.getFilePaths());
viewPager.setAdapter(adapter);
// displaying selected image first
viewPager.setCurrentItem(position);
btnClose = (Button) findViewById(R.id.btnClose);
btnShare = (Button) findViewById(R.id.btnshare0);
btnDelete = (Button) findViewById(R.id.btndelete);
btnClose.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
btnShare.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
File file = new File(adapter._imagePaths.get(viewPager
.getCurrentItem()));
Intent mShareIntent = new Intent(Intent.ACTION_SEND);
mShareIntent.setType("image/*");
mShareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
startActivity(Intent.createChooser(mShareIntent, "Shareith:"));
}
});
btnDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
deleteTmpFile(viewPager.getCurrentItem());
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setMessage("Delete this Photo?")
.setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
});
}
public void deleteTmpFile(int pos) {
//String Foldername = mContext.getResources()
// .getString(R.string.app_name);
/*
* String filepath = Environment.getExternalStorageDirectory().getPath()
* + "/" + Foldername + "/" +data.get(pos) ;
*/
File f = new File(adapter._imagePaths.get(viewPager
.getCurrentItem()));
//File f = new File(filepath);
if (f.exists()) {
f.delete();
deleteFileFromMediaStore(mContext.getContentResolver(), f);
// final Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
// mContext.getContentResolver().delete(uri,
// MediaStore.MediaColumns.DATA + " =?",
// new String[] { filepath });
notifyAll();
}
Toast.makeText(mContext, "Delete Successfully..", Toast.LENGTH_SHORT)
.show();
}
public static void deleteFileFromMediaStore(
final ContentResolver contentResolver, final File file) {
String canonicalPath;
try {
canonicalPath = file.getCanonicalPath();
} catch (IOException e) {
canonicalPath = file.getAbsolutePath();
}
final Uri uri = MediaStore.Files.getContentUri("external");
final int result = contentResolver.delete(uri,
MediaStore.Files.FileColumns.DATA + "=?",
new String[] { canonicalPath });
if (result == 0) {
final String absolutePath = file.getAbsolutePath();
if (!absolutePath.equals(canonicalPath)) {
contentResolver.delete(uri, MediaStore.Files.FileColumns.DATA
+ "=?", new String[] { absolutePath });
}
}
}
}
무엇이 작동하지 않습니까? 그리고 무엇이 효과가 있습니까? – greenapps
삭제 버튼을 클릭하면 앱이 손상됩니다. –
그런 경우 LogCat에서 원인을 찾을 수 있습니다. 여기에 관련 부분을 게시하십시오. 어떤 코드 행이이를 야하는지 찾아야합니다. 그리고 우리에게 말해줘. – greenapps