0

私のアプリでは、ユーザーが 'ImageView'を押すと、画像を変更するようにユーザーを促すチューザのインテントが作成されます。ここでオーバーライドの選択のインテントの振る舞い

は、私はImageViewの

userProfileIMG.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      photoPickerIntent.setType("image/*"); 

      Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      if (takePhotoIntent.resolveActivity(getPackageManager()) != null) 
      { 
       try 
       { 
        photoFile = Create_ImageFile(); 
       } 
       catch (Exception e) 
       { 
        Log.e("file", e.toString()); 
       } 
       if (photoFile != null) 
       { 
        takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile.getAbsoluteFile())); 
       } 
      } 

      String pickTitle = getString(R.string.select_or_take_new_picture); 
      Intent chooserIntent = Intent.createChooser(photoPickerIntent, pickTitle); 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{takePhotoIntent}); 

      startActivityForResult(chooserIntent, ACTIVITY_SELECT_PICTURE); 
     } 
    }); 

のときに、ユーザーのクリックを使用し、これは私の問題は、「ギャラリー」にすると、ユーザープレスで結果

enter image description here

で、選択したコードです私は彼が「Gallery」を押した場合にのみ<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>を要求したいので、セキュリティ上の例外を与える6.0のイメージ。ユーザーが「Gallery」を押したときにその動作を無効にする方法はありますか?私は彼にギャラリーを続けるようにさせた。 または私は私のためのダイアログを構築するためにシステムに依存しない手動で同じチューザーを構築する必要がありますか?

+0

カメラには許可が必要です。カメラへのアクセスを動的に許可する必要があります。 –

+0

より良い方法は、ユーザーがプロフィールページに入ったときに許可を求めることです。カメラとEXTERNAL_STORAGE権限が付与されている場合にのみ、オプションを選択するダイアログを表示します。 –

+0

@RaguSwaminathanいいえ私はカメラにアクセスしていない、私は写真を撮るためにカメラ自体を許可しており、許可が必要ない。 実際、これは、システムアプリがあなたのために仕事をする許可から逃れる方法です。 ここをクリックhttps://developer.android.com/training/permissions/best-practices.html –

答えて

0

Android 6.0以降の外部ストレージに書き込んだり読み込んだりすると、動的に権限を要求する必要があります。これはアンドロイド6.0以降で紹介された特別な機能です[Marshmallow]。

あなたは、Androidマニフェストで

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

を宣言したものの、外部ストレージへの書き込みをアプリの付与された権限がある場合は、アンドロイド6.0で実行している場合は、チェックします。 [settings-> apps-> youapp-> permissions]でアプリの権限の詳細を参照してください。それが無効になっていると、クラッシュに直面した可能性があります。

と詳細はandroid developer portal

はまたあなたにいくつかのアイデアを与えるだろう、以下の記事を参照してください確認してください。

Storage permission error in Marshmallow

Android 6.0 Marshmallow. Cannot write to SD Card

更新:意図経由のアクセスも許可システムを実装する必要があります。 Image from Gallery in Android 6(Marshmallow)

質問がありましたら教えてください。

+0

私はこれを認識しています。私の質問は、Android 6.0の許可を求める方法とは関係ありません。 代わりに、ユーザーが 'Gallery'を押すと検出する方法を尋ねています。 –

+0

デバイスのストレージを読み込もうとしていますか? –

+0

はい、試して、私は6.0の実行時のアクセス許可を要求する必要があることを知っていますが、私の質問は、デバイスストレージにアクセスするためのアクセス許可を要求する方法ではありません。 私の質問は別の別のトピックです。私の質問をうまく読んでください。そして、私が何を求めているのですか –

関連する問題