2017-12-31 309 views
0

ファイルセレクタを実装しています。 createChooserメソッドにはCharSequence titleが必要ですが、実際には(結果が複数のAPIレベルでテストされた)結果チューザーにこのタイトルは表示されません。createChooser(インテントタイトル)で作成したセレクタにタイトルが表示されない

private void openFileChooser() { 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, "Select Image"), PICK_IMAGE_REQUEST); 
} 

このタイトルは表示されるはずです。

答えて

2

Intent.createChooser()は、ACTION_CHOOSERIntentという便利なラッパーで、提供されるタイトルはEXTRA_TITLEで提供されます。

このタイトルはどこに表示されるはずですか?

ACTION_CHOOSERの実装では、理想的にはUIの一部としてタイトルが表示されます。しかし:

  • タイトル

  • ACTION_CHOOSERアクティビティの実装はあなたが常にではないでしょうデバイスの製造元によって異なりだけでなく、OSのバージョン

  • できるACTION_CHOOSERアクティビティ表示要件がありません選択者を取得してください(例:Intentに一致する0-1のアクティビティがあります)

ACTION_GET_CONTENTの特別なケースでは、Android 4.4以降では、選択機能をバイパスしてコンテンツを取得するためのシステム提供のUIに直接ルーティングされる傾向があります。

+0

詳細な回答ありがとうございます。 'setType(" image/*) 'で' ACTION_GET_CONTENT'が外部記憶装置を読み込む権限を必要としないのですか?私のエミュレータでは、私はgoogleで何も見つけられません。 –

+0

@FlorianWalther: "setType(" image/*)でACTION_GET_CONTENTは外部ストレージを読み取る権限を必要としませんか? - 正しい。 Android 4.3以降では、一般的に外部ストレージを読み込む権限は必要ありません。 Android 4.4以降では、 'ACTION_GET_CONTENT'は' file'スキームではなく 'content'スキームで' Uri'を返し、 'Uri'で指定されたコンテンツにアクセスする一時的な権利を持ちます。 – CommonsWare

+0

ありがとうございました!これは私が幾分理解している方法ですが、私はGoogleで特定のものは見つけられませんでした。しかし、4.3+は一般的に外部ストレージのアクセス権を必要としないと言いましたが、私は非常に多くの例でそれを実行するためのアクセス許可を要求しています。私は間違ったことを理解していますか –

関連する問題