Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从图像路径中删除图像_Android_Image_Delete File - Fatal编程技术网

Android 如何从图像路径中删除图像

Android 如何从图像路径中删除图像,android,image,delete-file,Android,Image,Delete File,从图像路径中删除图像时出现问题。从应用程序中以及从库中删除它时真的很困惑 我在从图像视图中删除图像时遇到了一个问题,即如何从活动以及文件位置的外部介质中删除图像 从3天开始尝试,但尚未找到解决方案。我需要在这个java文件中应用delete按钮代码 public class FullScreenViewActivity extends Activity { private Utils utils; private FullScreenImageAdapter adapt

从图像路径中删除图像时出现问题。从应用程序中以及从库中删除它时真的很困惑 我在从图像视图中删除图像时遇到了一个问题,即如何从活动以及文件位置的外部介质中删除图像

从3天开始尝试,但尚未找到解决方案。我需要在这个java文件中应用delete按钮代码

    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 });
                }
            }

        }


}

我想您的MediaStore没有更新。删除后您是否尝试过此功能

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(fileDeleted)));
对于4.4及以下版本

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

我想您的MediaStore没有更新。删除后您是否尝试过此功能

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(fileDeleted)));
对于4.4及以下版本

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

你可以看到问题的答案


对于删除后的情况,请检查布尔变量(如果为true),然后重新加载/刷新列表

您可以看到问题的答案



对于删除后的情况,请检查布尔变量(如果为true),然后重新加载/刷新列表

什么不起作用?什么有效?当我点击删除按钮时,应用程序崩溃。在这种情况下,你可以在日志中找到原因。请在此张贴相关部分。您必须找到导致此问题的代码行。然后告诉我们。问题由我解决了,但现在当我按下后退按钮时,图像又出现了,但它被删除了,但又显示了回来。。为什么?告诉我问题出在哪里,然后发布修改后的代码。那么什么不起作用呢?什么有效?当我点击删除按钮时,应用程序崩溃。在这种情况下,你可以在日志中找到原因。请在此张贴相关部分。您必须找到导致此问题的代码行。然后告诉我们。问题由我解决了,但现在当我按下后退按钮时,图像又出现了,但它被删除了,但又显示了回来。。为什么?告诉我问题是什么,然后发布修改后的代码。当我点击删除按钮时,它甚至没有删除任何内容,然后它崩溃。问题由我解决了,但现在当我按下后退按钮时,图像再次出现,但它被删除,但再次显示回来。。为什么?你需要用新的数据列表刷新你的浏览页面我需要刷新这个井当我点击删除按钮时,它甚至没有删除任何内容,然后它崩溃问题由我解决了,但现在当我按下后退按钮时,图像再次出现,但它被删除,但再次显示回来。。为什么?你需要用新的数据列表刷新你的浏览页面我需要在这里刷新