1

写真ギャラリーから画像を取得できるAndroidアプリを構築しています。

よろしければ、2 つの質問:

1)

 Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        String action = intent.getAction();

        Uri uri = null;

        // if this is from the share menu
        if (Intent.ACTION_SEND.equals(action)) {
            if (extras.containsKey(Intent.EXTRA_STREAM))
            {
                try
                {
                    // Get resource path from intent callee
                     uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);

私はこのuriを持っています:

content://media/external/images/media/27031

しかし、私のコードはここで情報なしで失敗し(クラッシュするだけです)、ログキャットもコンソールエラーもありません。

 try {
            if (uri !=null)
            {

            Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);

            imageView.setImageBitmap(bitmap);
            }

        } catch (IOException e) {
            e.printStackTrace();

            Log.e(this.getClass().getName(), e.toString());
        }

どうすればこれを解決できますか?

(このURLで機能します:Uri uri = Uri.parse("content://media/external/images/media/22719");

2) すべての uri をデータ構造に保存する予定です。それが推奨される方法ですか?

または、写真をローカルのアプリ フォルダーに保存する方がよいでしょうか?

アップデート

問題は、失敗したイメージが外部 SD にあり、後続のイメージがローカル SD にあったことだと思います。

外部 SD からのイメージの取得を有効にするにはどうすればよいですか?

4

1 に答える 1

0

写真の「共有」アクションからビットマップを取得するためのコード...

    Object obj = null;

        if (Intent.ACTION_SEND.equals(_action) && _type != null) {
            obj = _bundle.get("android.intent.extra.STREAM");
            if( getIntent().getType().startsWith("image/") && obj != null){
              if (obj instanceof android.net.Uri){ get((Uri)obj);}}

  get(Uri uri){
      Bitmap _bit = BitmapFactory.decodeStream(
       getContentResolver().openInputStream(uri),null,options);
}
于 2013-09-14T12:36:38.383 に答える