2017-03-01 6 views
0

インターネットから私の携帯電話に画像ファイルを保存します。 AndroidManifestファイルにInternetとexternalstorage Permissionの両方を使用しました。しかし、以下のエラーが出ます。私のデバイスはSDカードを持っていないからだと思います。もしそうなら、私は内部ストレージにどのように保存するかを知りたいです。Androidモバイルの内部ストレージに自分のjpegファイルを保存する方法。それはSDカードを持っていません

myError

java.io.FileNotFoundException: /storage/emulated/0/Pictures/GettyImages-460712009-560x450.jpg:オープン に失敗しました:EACCESを(許可が拒否さによって引き起こさ: アンドロイド.system.ErrnoException:オープンに失敗しました:EACCES(パーミッション拒否)以下

は私のコードです

。あなたはデバイスがAndroidのマシュマロを有し、かつ、バージョン以上のためのランタイム許可を実装していないため、3210
try { 
     URL urlobj = new URL(url); 
     connection= (HttpURLConnection) urlobj.openConnection(); 
     inputStream=connection.getInputStream(); 

      file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + "/"+ Uri.parse(url).getLastPathSegment()); 

      FileOutputStream fileOutputStream = new FileOutputStream(file); 

      int reed = -1; 
      byte[] buffer = new byte[1024]; 

      // if no data is return -1 keep reading until -1 
      while((reed=inputStream.read(buffer))!= -1){ 

      fileOutputStream.write(buffer,0,reed);    
} 
+0

があなたの権限を投稿し確認してください。 marshmallowを使用している場合は、アプリ情報の許可を許可する必要があります –

+0

実行するデバイスは?そのマシュマロは、それをロールポップまたはマシュマロに変更してください。これが不可能な場合は、アプリの許可を許可する許可を与えてください。 –

答えて

0

あなたが許可を取得しているこれは、あなたがこれを達成することができますどのように..です

を例外を拒否:

次の権限を追加します。

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

ユーザーが既に許可を与えている場合にマッチします。はい、許可を求めるをスキップし、他の作業を続行する場合は、許可をユーザーに尋ねる:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (!Settings.System.canWrite(this)) { 
      requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, 
        Manifest.permission.READ_EXTERNAL_STORAGE}, 2909); 
     } else { 
      // your code 
     } 
    } else { 
     // your code 
    } 

許可結果コールバック:

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     switch (requestCode) { 
      case 2909: { 
       if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        Log.e("Permission", "Granted"); 
       } else { 
        Log.e("Permission", "Denied"); 
       } 
       return; 
      } 
     } 
    } 
+0

ありがとう!私のデバイスはマシュマロにあった。 – Rohaitas

+0

ありがとう!私のデバイスはマシュマロにあった。 – Rohaitas

0

内部メモリの使用でこのコードを画像を保存します。

あなたはその使用Amit sharma回答のため、マシュマロにバージョンの上に時間許可を実行する必要がある<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

ファイルmanifastあなたに権限を追加する必要があります。

デフォルトの画像ディレクトリにファイルを保存するコードは次のとおりです。モードの詳細については

private File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "JPEG_" + timeStamp + "_"; 
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
    File image = File.createTempFile(
     imageFileName, /* prefix */ 
     ".jpg",   /* suffix */ 
     storageDir  /* directory */ 
    ); 

    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = image.getAbsolutePath(); 
    return image; 
} 

このLink

関連する問題