2017-03-09 4 views
1

私はいくつかのAndroidアプリを開発しており、カスタムカメラではありません。このアプリは必要なすべての権限(カメラ、書き込み、読み取り外部)を持っています。昨日まで、すべてうまくいった:ショットの後、画像はデバイスギャラリーに保存され、ImageViewに表示された。私はAndroid 7.0にアップグレードしましたが、カメラは画像を保存しなくなり、結果はnulldata.getData())になります。アンドロイドにアップグレードしてからギャラリーに画像を保存できません。

誰でもAndroid 7.0の変更点を知っていますか?

+0

これはクラス 'cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT、picUri);で使用します。 –

+0

あなたのコードをよく表示します。 – greenapps

+0

'カメラは画像をもう保存しません。カメラは画像を保存しません。カメラアプリだけがそうすることができます。あなたは1つを使用していますか?あなたはまだあなたのデバイス上のカメラアプリで通常の方法で写真を撮ることができますか? – greenapps

答えて

1
public class SaveImageAsync extends AsyncTask<Integer, Void, Void> { 
    @Override 
    protected Void doInBackground(Integer... params) { 


     try { 


      InputStream in; 
      BufferedInputStream buf; 
      int position = params[0]; 

      if (URLUtil.isNetworkUrl(use image here)) { 
       in = new URL(use image here 
       ).openStream(); 


       buf = new BufferedInputStream(in); 
       Bitmap _bitmapPreScale = BitmapFactory.decodeStream(buf); 
       int oldWidth = _bitmapPreScale.getWidth(); 
       int oldHeight = _bitmapPreScale.getHeight(); 
       int newWidth = 2592; 
       int newHeight = 1936; 

       float scaleWidth = ((float) newWidth)/oldWidth; 
       float scaleHeight = ((float) newHeight)/oldHeight; 

       Matrix matrix = new Matrix(); 

       matrix.postScale(scaleWidth, scaleHeight); 
       Bitmap _bitmapScaled = Bitmap.createBitmap(_bitmapPreScale, 0, 0, oldWidth, oldHeight, matrix, true); 


       ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
       _bitmapScaled.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 

       File directory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),"wave"); 
       directory.mkdirs(); 
       directory.mkdir(); 


       File f = new File(directory, "writeurnamefolder_Gallery" + System.currentTimeMillis() + ".jpg"); 


       f.createNewFile(); 

       FileOutputStream fo = new FileOutputStream(f); 
       fo.write(bytes.toByteArray()); 

       fo.close(); 
      } else if (URLUtil.isFileUrl(use here original image)) { 
       MediaStore.Images.Media.insertImage(getContentResolver(), Uri.parse(get your image here.getPath(), "writeurnamefolder_Gallery" + System.currentTimeMillis(), "Gallery Image :"); 
      } 

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

     } 

     return null; 
    } 


} 
+0

あなたはこれらの許可を与える必要があります。これがあなたに役立つことを願っています.WRITE_EXTERNAL_STORAGE}、 MY_PERMISSIONS_REQUEST_READ_CONTACTS –

+0

ポイントコードにはいかがですか。誰もそのようなコードを要求しなかった。あなたはどう思ったのですか? – greenapps

0

ファイル://はもう意図して付着させていないか、またはそれはすぐに呼ばれるアプリのクラッシュを引き起こす可能性がありFileUriExposedExceptionがスローされます。

関連する問題