正如您在下面看到的那样,我尝试在一个布局中将2个不同TextView
中的2个文件路径与2个不同的Button
进行比较,但是第二个TextView
制作了要显示放置在内部存储空间中的.jpg
或.png
所选图像路径,它不会显示其TextView
中的路径,它会给我一个祝酒词"نوع فایل انتخابی قابل قبول نیست"
女巫意味着"invalid file type"
。
这是我的尝试: 首先:
TextView pathfiletxt, pathpictxt;
Button chfilebtn, chpicbtn
private static final int SELECT_FILE_DIALOG = 1;
private static final int SELECT_IMAGE_DIALOG = 2;
onCreate
中的:
pathfiletxt = (TextView) findViewById(R.id.txt_pathfile);
pathpictxt = (TextView) findViewById(R.id.txt_pathpic);
chfilebtn = (Button) findViewById(R.id.btn_chosfile);
chpicbtn = (Button) findViewById(R.id.btn_chospic);
setOnClickListener
中的:
chfilebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setType("audio/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "فایل مورد نظر خود را انتخاب کنید:"), SELECT_FILE_DIALOG);
}
});
chpicbtn.setOnClickListener(new View.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_IMAGE_DIALOG);
}
});
onActivityResult
中的:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent result) {
super.onActivityResult(requestCode, resultCode, result);
// if (resultCode == RESULT_OK) {
if (requestCode == SELECT_FILE_DIALOG) {
Uri data1 = result.getData();
if(data1.getLastPathSegment().endsWith(".pdf") || data1.getLastPathSegment().endsWith(".mp3")){
pathfiletxt.setText(data1.getPath());
} else {
Toast.makeText(RegBookActivity.this, "نوع فایل انتخابی قابل قبول نیست", Toast.LENGTH_SHORT).show();
}
}
// }
if(requestCode == SELECT_IMAGE_DIALOG){
Uri data2 = result.getData();
if(data2.getLastPathSegment().endsWith(".jpg") || data2.getLastPathSegment().endsWith(".png")){
pathpictxt.setText(data2.getPath());
} else {
Toast.makeText(RegBookActivity.this, "نوع فایل انتخابی قابل قبول نیست", Toast.LENGTH_SHORT).show();
}
}
}
我还尝试了注释代码和许多不同的形状,但它没有正常工作,只是在Button chfilebtn
中显示了TextView pathfiletxt
所选文件的路径。请帮忙。谢谢。
答案 0 :(得分:0)
这对我有用:
private Uri getUri() {
String state = Environment.getExternalStorageState();
if(!state.equalsIgnoreCase(Environment.MEDIA_MOUNTED))
return MediaStore.Images.Media.INTERNAL_CONTENT_URI;
return MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent result) {
super.onActivityResult(requestCode, resultCode, result);
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_FILE_DIALOG) {
if (null == result) return;
Uri data = result.getData();
if(data.getLastPathSegment().endsWith("pdf") || data.getLastPathSegment().endsWith("mp3")){
sourceFileUri = data.getPath();
SharedPreferences upload = getSharedPreferences("uploadPrefs", 0);
SharedPreferences.Editor setedt = upload.edit();
setedt.putString("filepath", data.getPath());
setedt.commit();
pathfiletxt.setText(upload.getString("filepath", "").toString());
} else {
Toast.makeText(RegBookActivity.this, "نوع فایل انتخابی قابل قبول نیست", Toast.LENGTH_SHORT).show();
}
}
if(requestCode == SELECT_IMAGE_DIALOG){
if (null == result) return;
try {
Uri originalUri = result.getData();
String pathsegment[] = originalUri.getLastPathSegment().split(":");
String id = pathsegment[0];
final String[] imageColumns = { MediaStore.Images.Media.DATA };
final String imageOrderBy = null;
Uri uri = getUri();
Cursor imageCursor = RegBookActivity.this.getContentResolver().query(uri, imageColumns,
MediaStore.Images.Media._ID + "=" + id, null, null);
if (imageCursor.moveToFirst()) {
String value = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
if(value.contains("jpg") || value.contains("png")){
sourceImgUri = value;
Bitmap bitmap = BitmapFactory.decodeFile(value);
upimage.setImageBitmap(bitmap);
SharedPreferences upload = getSharedPreferences("uploadPrefs", 0);
SharedPreferences.Editor setedt = upload.edit();
setedt.putString("picpath", value);
setedt.commit();
pathpictxt.setText(upload.getString("picpath", "").toString());
} else {
Toast.makeText(RegBookActivity.this, "نوع فایل انتخابی قابل قبول نیست", Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
Toast.makeText(RegBookActivity.this, "نوع فایل انتخابی قابل قبول نیست", Toast.LENGTH_LONG).show();
}
}
}
}