如何从画廊中选择图像并将其传递给另一个活动,

时间:2020-09-13 11:11:34

标签: android android-studio

我正在制作一个生日许愿应用程序,一切正常,但是我希望用户可以从图库中选择图像,并将其传递到第二个活动,当计时器确定后,我在其中使用了报价栏。

我的MainActivity

public class MainActivity extends AppCompatActivity {

    CircularView circularViewWithTimer;
    EditText entertime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setFlags(
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
        );

        entertime = (EditText) findViewById(R.id.Txt_time);

        circularViewWithTimer = findViewById(R.id.circular_view);

        CircularView.OptionsBuilder builderWithTimer =
                new CircularView.OptionsBuilder()
                        .shouldDisplayText(true)
                        .setCounterInSeconds(15)
                        .setCircularViewCallback(new CircularViewCallback() {
                            @Override
                            public void onTimerFinish() {
                               String name = entertime.getText().toString();
                                Intent i = new Intent(MainActivity.this, Bday_page.class);
                               i.putExtra("text", name);
                                startActivity(i);
                                finish();
                            }

                            @Override
                            public void onTimerCancelled() {

                                // Will be called if stopTimer is called
                                Toast.makeText(MainActivity.this, "CircularCallback: Timer Cancelled ", Toast.LENGTH_SHORT).show();


                            }
                        });

        circularViewWithTimer.setOptions(builderWithTimer);
    }

    public void btn_pause(View view) {
        circularViewWithTimer.pauseTimer();
    }

    public void btn_start(View view) {
        MediaPlayer mMediaPlayer;

        if(entertime.getText().toString().isEmpty()){
            Toast.makeText(this, "Enter name of bday boy", Toast.LENGTH_SHORT).show();
        }
        else {
            circularViewWithTimer.startTimer();

            mMediaPlayer = new MediaPlayer();
            mMediaPlayer = MediaPlayer.create(this,R.raw.count);
            mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mMediaPlayer.setLooping(true);
            mMediaPlayer.start();
        }
    }

    public void btn_resume(View view) {
        circularViewWithTimer.resumeTimer();
    }
}

我的第二项活动

public class Bday_page extends AppCompatActivity {

    TextView nameuser;
    MediaPlayer mMediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bday_page);
       nameuser = (TextView)findViewById(R.id.txt_imagename);

        getWindow().setFlags(
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
        );

        mMediaPlayer = new MediaPlayer();
        mMediaPlayer = MediaPlayer.create(this, R.raw.happybady);
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mMediaPlayer.setLooping(true);
        mMediaPlayer.start();

        Intent i = getIntent();
        nameuser.setText(i.getStringExtra("text"));


    }
}

1 个答案:

答案 0 :(得分:1)

首先,您需要在清单中请求存储权限

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

在那之后,在MainActivity中使像这样的onTimerFinish方法

@Override
                    public void onTimerFinish() {
  Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("image/*");
    startActivityForResult(intent,1777);
}

现在您从Galary索取图像,然后将onActivityResult方法添加到您的主要活动中以接收图像

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
if ( resultCode == Activity.RESULT_OK) {
        if (requestCode == CAMERA_REQUEST) {
 Uri uri = data.getData();
            Cursor cursor;
String[] filePathColumn = { MediaStore.Images.Media.DATA };
                    cursor = getContentResolver().query(uri,
                            filePathColumn, null, null, null);
                    cursor.moveToFirst();

                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    picturePath = cursor.getString(columnIndex);
                    cursor.close();
String name = entertime.getText().toString();
                        Intent i = new Intent(MainActivity.this, Bday_page.class);
                       i.putExtra("text", name);
                       i.putExtra("imagePath",picturePath )
                        startActivity(i);
                        finish();
}}}

现在您将获得所选图像的路径并将其发送到下一个活动 然后在您的第二个活动中收到这样的图片

Intent i = getIntent();
nameuser.setText(i.getStringExtra("text"));
String imagePath = i.getStringExtra("imagePath") //add these

现在您在新活动中有了图像路径,就可以使用它来做您想做的事情