2016-05-29 2 views
0

まずは自分の状況を紹介したいと思います。私のプロジェクトは、私は別のAPIの写真を選ぶことができるということです。例えば、私のアプリはKitkatからMarshmallowまでです。それは私がKitkatの許可を必要としないことを意味するが、私はMarshmallowに必要とする。私は私のアプリをテストし、KitkatとLolipopでうまくいきますが、Marshmallowで私は画像を選択してアプリがクラッシュします。だから私はこの問題は、私が許可を得ずに、ユーザからの画像を取得するので、私はそれを編集することができないであることを考えている権限についてギャラリーAndroidのさまざまなAPIのアクセス許可

私の最後のコードでした(私ができる他のAPIの上で。):

if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) 
      == PackageManager.PERMISSION_GRANTED) { 


    } else if (shouldShowRequestPermissionRationale(
      Manifest.permission.READ_EXTERNAL_STORAGE)) { 
     Toast.makeText(this, "Gallery permission is needed to edit photos.", 
       Toast.LENGTH_SHORT).show(); 
    } 

    requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
      MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); 

    // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an 
    // app-defined int constant 

    return; 

(私はKitkatのためにそれを必要としないので削除しました。しかし、私はマシュマロのためにそれを必要とします:/) 何か提案がありますか?

答えて

0

この例では、カメラにアクセスし、marshmallowに読み取り/書き込み許可を与えます。

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 
     givePerMissons(); 

    } else { 
     openGallery(); 
    } 
public void givePerMissons() { 
    if ((Utils.checkPermission(MainActivity.this, Manifest.permission.CAMERA)&& 
      Utils.checkPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
     openGallery(); 
    } else { 
     Utils.givePermisson(MainActivity.this, Manifest.permission.CAMERA, Utils.PERMISSOIN); 

     if (!Utils.permissionsList.isEmpty()) { 
      requestPermissions(Utils.permissionsList.toArray(new String[Utils.permissionsList.size()]), Utils.PERMISSOIN_CODE); 
     } 
    } 
} 
@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 

    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case Utils.PERMISSOIN_CODE: { 
      if ((Utils.checkPermission(MainActivity.this, Manifest.permission.CAMERA)&& 
      Utils.checkPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
       openGallery(); 
      } else { 
       Toast.makeText(getApplicationContext(),"Write Your message",Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 
} 
関連する問題