2016-07-13 8 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

を削除ボタンコードを適用する必要があり、私はあなたのメディアストアは、あなたが4.4と低く

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 
のために削除した後

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(fileDeleted))); 

をこの機能を試してみましたupdated.Haveされていないと思います

+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

あなたの場合、真の場合はブール変数をチェックして削除した後、あなたのリストを再読み込み/更新してください。

関連する問題