我正在制作一个生日许愿应用程序,一切正常,但是我希望用户可以从图库中选择图像,并将其传递到第二个活动,当计时器确定后,我在其中使用了报价栏。
我的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"));
}
}
答案 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
现在您在新活动中有了图像路径,就可以使用它来做您想做的事情