2017-02-10 30 views
-1

私は画像をサーバに送信します。私はサーバーに画像を送信すると、marshmallowを除くすべてのバージョンが正常に動作します。オープンに失敗しました:画像をサーバにアップロード中にEACCES(許可が拒否されました)

私はギャラリーから画像を選んでいる間に許可を得ました。画像を送信するための特別な許可がありますか?

private static int PICK_IMAGE_REQUEST = 1; 

if (Build.VERSION.SDK_INT <= 19) { 
       Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(i, PICK_IMAGE_REQUEST); 
      } else if (Build.VERSION.SDK_INT > 19) { 
       Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(i, PICK_IMAGE_REQUEST); 

      } 
+0

Downvoter説明してください..?なぜあなたはDownvoted – Sasi

答えて

1

...あなたの問題はこれで解決さホープのAndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
活動に

private static final int REQUEST_STORAGE = 112; 


    if (Build.VERSION.SDK_INT >= 23) { 
    String[] PERMISSIONS = {android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE}; 
    if (!hasPermissions(mContext, PERMISSIONS)) { 
     ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST_STORAGE); 
    } else { 
     Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(i, PICK_IMAGE_REQUEST); 
    } 
} else { 
    Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(i, PICK_IMAGE_REQUEST); 
} 

/*get Permissions Result*/ 
@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case REQUEST_STORAGE: { 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(i, PICK_IMAGE_REQUEST); 
      } else { 
       Toast.makeText(mContext, "The app was not allowed to write to your storage.", Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 
} 

    /*check permissions for marshmallow*/ 

private static boolean hasPermissions(Context context, String... permissions) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
     for (String permission : permissions) { 
      if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 
+0

ありがとうございます。その働き – Sasi

1

ユーザーの実行時アクセス許可を要求する必要があります。このリンクをチェックしてくださいhttps://developer.android.com/training/permissions/requesting.html

+0

私のコードのためにそれを使うことができますか? – Sasi

+0

この例を確認してください。 http://www.truiton.com/2016/04/obtaining-runtime-permissions-android-marshmallow-6-0/ – Maxitors

+0

あなたの答えをありがとう。それは働いた。 – Sasi

1

もう1つのインターネットの許可があります。

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

はまた、設定に移動し、許可が許可を実行時に指定するために必要とされるマシュマロのように付与されているかどうかを確認...]リンク以下

確認ください.... https://developer.android.com/training/permissions/requesting.html

+0

あなたの答えをありがとう。それは働いた。 – Sasi

関連する問題