2016-06-24 10 views
1

でImageViewのからAndroid携帯に保存する画像だから私はのように見えること、ここで、このフラグメントを持っている:私は何をしようとしているアンドロイド:フラグメント

enter image description here

は自分の携帯電話に画像を保存している(中ファイルのダウンロードやギャラリー、または...)。

Stackoverflowとインターネットをスキャンしましたが、コードが機能していません。私は間違いはしませんが、私の電話に写真を保存していません。何が問題なの?私が使用したコードはStackoverflowから来ています。

public class MainFragment extends Fragment { 
    Button download; 
    ImageView DownloadImage; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 


     View v = inflater.inflate(R.layout.fragment_main, container, false); 

     DownloadImage = (ImageView) v.findViewById(R.id.imageToDownload); 
     download = (Button) v.findViewById(R.id.buttonDownloadImage); 


     Picasso.with(getActivity()).load("http://192.168.200.2/android_login_api/images/actie.png").into(DownloadImage); 

     download.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       saveImageLocally(DownloadImage); 

      } 
     }); 
     return v; 
    } 


    private String saveImageLocally(ImageView iv) { 
     iv.buildDrawingCache(); 

     Bitmap bmp = iv.getDrawingCache(); 

     File storageLoc = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); //context.getExternalFilesDir(null); 

     File file = new File(storageLoc, "test" + ".jpg"); 

     try{ 
      FileOutputStream fos = new FileOutputStream(file); 
      bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
      fos.close(); 

      scanFile(getActivity(), Uri.fromFile(file)); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return "true"; 
    } 

    private static void scanFile(Context context, Uri imageUri){ 
     Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
     scanIntent.setData(imageUri); 
     context.sendBroadcast(scanIntent); 

    } 

} 

答えて

1

私はあなたのコードを試してみましたが、その作業を完璧に記録されているため、あなたが、Manifest.xmlにこの権限を持っていますか:open failed: EACCES (Permission denied)

試してみてください。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

は、実際に私は、結果をあなたのコードを試してみましたが、ログに記録ログキャップを次のように表示する:

catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     Log.v("bitmap","not found , "+e.getMessage()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.v("bitmap","io ex , "+e.getMessage()); 
    } 
+0

どうもありがとう、どういうばかげたミスマック私のそれらのpermitionsを忘れてしまいます。ありがとう! –

+1

@KahnKah問題ありません。例外をトレースし、ファイルを作成/処理する際にログに記録することをお勧めします。多分あなたはより多くの問題を得るでしょう。あなたのlogcatに1つの問題がある場合、簡単に見つけることができます。 –

関連する問題