2016-07-13 2 views
1

Проблема с удалением изображения с его пути. действительно запутался в том, чтобы удалить его из приложения, а также из галереи. . Я столкнулся с проблемой удаления изображения с изображения. Просмотрите горячую информацию, чтобы удалить ее из активности, а также внешний носитель расположения файла.Как удалить изображение из его пути изображения

Попытка использования с 3-х дней и пока не найдена. Мне нужно применить удаления код кнопки в этом файле Java

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

     } 


} 
+0

Хорошо, что не работает? И что работает? – greenapps

+0

, когда я нажимаю кнопку удаления, тогда приложение вылетает –

+1

В таком случае вы можете найти причину в LogCat. Пожалуйста, разместите соответствующую часть здесь. Вы должны найти, какая строка кода вызывает это. А потом расскажи нам. – greenapps

ответ

0

Я думаю, что ваш MediaStore не updated.Have вы пробовали эту функцию после удаления

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()))); 
+0

ну, он даже не удаляет что-либо, когда я нажимаю кнопку «Удалить», а затем он падает –

+0

Можете ли вы, пожалуйста, дать мне журнал ошибок? – Krutik

+0

Проблема решена мной, но теперь, когда я нажимаю кнопку «Назад», изображение снова появляется, но оно удаляется, но снова показывает его. Почему? –

0
package com.example.fakenewspapermaker; 

import info.androidhive.imageslider.helper.Utils; 

import java.io.File; 
import java.io.IOException; 



import android.R.string; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.ContentResolver; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.support.v4.view.ViewPager; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

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, "Share with:")); 
      } 
     }); 

     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: 
          File file = new File(adapter._imagePaths.get(viewPager 
            .getCurrentItem())); 
          if (file.exists()) 
          { 
           file.delete(); 

          } 
          finish(); 


          break; 


         case DialogInterface.BUTTON_NEGATIVE: 
          break; 
         } 
        } 

       }; 

       AlertDialog.Builder builder = new AlertDialog.Builder(FullScreenViewActivity.this); 
       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 }); 
       } 
      } 

     } 
     @Override 
     public void onBackPressed() 
     { 
      finish(); 
       Intent newIntent = new Intent(FullScreenViewActivity.this, 
       MySavedNews.class); 
       newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(newIntent); 
     } 

} 
0

Ответы на вопросы link

и для вашего случая после удаления, проверяя логическую переменную, если true, а затем перезагрузите/обновите свой список.

Смежные вопросы