2017-02-10 6 views
-1

Im работает над проектом, который я хочу отправить на сервер. Когда я отправляю изображение на сервер, все версии, кроме marshmallow, работают отлично.open failed: EACCES (Permission denied) в зефире при загрузке изображения на сервер

Я получил разрешение, выбрав изображение из галереи. Есть ли у меня какое-либо специальное разрешение на отправку изображения?

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/obiving-runtime-permissions-android-marshmallow-6-0/ – Maxitors

+0

Спасибо за ваш ответ. Сработало. – Sasi

1

Существует еще одно разрешение Интернета, которое может отсутствовать.

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

сделать также зайти в настройки и убедитесь, что разрешение было предоставлено как в зефира разрешение требуется, чтобы быть дано во время выполнения ..

Проверьте ниже ссылку .... https://developer.android.com/training/permissions/requesting.html

Надежда ваша проблема получает решена с этим ...

+0

Спасибо за ваш ответ. Сработало. – Sasi

 Смежные вопросы

  • Нет связанных вопросов^_^