2017-02-10 102 views
-1

我正在項目,我想要發送圖像到服務器。當我發送圖像到服務器除棉花糖以外的所有版本都可以正常工作。打開失敗:棉花糖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請解釋一下..?爲什麼你降低投票 – 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

還有一個互聯網的權限可能會丟失給予。

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

還做去設置和檢查權限已被授予在棉花糖需要允許在運行時給予..

檢查下面的鏈接.... https://developer.android.com/training/permissions/requesting.html

希望您的問題獲得與此解決...

+0

感謝您的回答。它的工作。 – Sasi

相關問題