1

そこで、デバイスのギャラリーを開くように促す機能を見つけました。しかし、周りを検索すると、これを変更して画像パスを返すのに役立つものは見つかりませんでした。彼らは、私がボイド自体に置いた後、拒否される onActivityResult() について何か言います。これについて何か助けはありますか?

public void chooser() {
      AlertDialog.Builder myDialog
         = new AlertDialog.Builder(IPAddress.this);

         myDialog.setTitle("Import Menu Images");

         LinearLayout layout = new LinearLayout(IPAddress.this);
         layout.setOrientation(LinearLayout.VERTICAL);
         myDialog.setView(layout);

         myDialog.setPositiveButton("Open Folder", new DialogInterface.OnClickListener() {
             // do something when the button is clicked
             public void onClick(DialogInterface arg0, int arg1) {

                Intent i = new Intent(
                        Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                        startActivityForResult(i, 1);
              }
             });

         myDialog.setNegativeButton("Exit", new DialogInterface.OnClickListener() {
             // do something when the button is clicked
             public void onClick(DialogInterface arg0, int arg1) {
                 arg0.dismiss();
              }
             });

         myDialog.show();
}

選択した画像のパスを返し、そのパスを使用して上記のファイルをコピーし、アクティビティの OnCreate で作成したディレクトリに保存します。

また、「フォルダーを開く」ボタンをクリックすると、次のエラーが表示されるため、上記の機能をデバッグできないようです

The application Camera(process.com.android.gallery) has stopped unexpectedly. Please try again.

私は何度も試しました。エミュレーターにフロントカメラも追加しました。

関数はここで呼び出されます:

    Button menu_image = (Button) findViewById(R.id.menu_image);
    menu_image.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View arg0) {
        chooser();
        }

    });

したがって、可能な場合は、セレクターが文字列 (?) 型を返し、それを使用してファイルをコピーし、名前を変更したいと思います。

4

1 に答える 1

1

デフォルトのアプリ チューザーは、次の方法でクエリできます。

Button galleryBtn = (Button) view.findViewById(R.id.gallery_btn);
        galleryBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(
                Intent.createChooser(intent, "Select Picture"), 2);

            }
        });

そして、アクティビティ/フラグメントの onActivityResult() で、選択したファイルの URi を受け取ります。

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        Uri uriString = null;

        if (requestCode == 2 && resultCode == RESULT_OK) {
            Uri uri = data.getData();
            if (uri != null) {

                Cursor cursor = getActivity().getContentResolver()
                        .query(uri,
                                new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
                                null, null, null);
                cursor.moveToFirst();


                Bitmap bm = BitmapFactory.decodeFile(cursor.getString(0));
                File file = new File(cursor.getString(0));

                uriString = Uri.fromFile(file);

         // do processing with the uri here

                cursor.close();

            }

        }else{
            Log.e("RDT", "Something went wrong.");
            return;
        }
}
于 2013-02-22T03:56:31.553 に答える