上传图像应用程序:它在模拟器上工作正常,但无法在测试手机上传图像。它从图库中选择图片,但在Imageview中不显示任何内容。
public class Uploadimage extends Activity {
public static int requestCode=1;
Button b1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_uploadimage);
b1= (Button) findViewById(R.id.button1);
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i=new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, requestCode);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data) ;
if (requestCode==1 && resultCode==RESULT_OK) {
Uri image = data.getData();
String [] filepath = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(image, filepath, null, null, null);
cursor.moveToFirst();
int column = cursor.getColumnIndex(filepath[0]);
String path= cursor.getString(column);
cursor.close();
ImageView imageview= (ImageView) findViewById(R.id.imageView1);
imageview.setImageBitmap(BitmapFactory.decodeFile(path));
}
}
}
答案 0 :(得分:0)
如果您从移动设备获取内容,则以下代码必须在清单文件中写入:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
使用以下代码,您将获得解决方案..
`buttonLoadImage.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 0);
}});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
Uri targetUri = data.getData();
Bitmap bitmap;
try
{
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
targetImage.setImageBitmap(bitmap);
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}`
答案 1 :(得分:0)
使用以下方法解码文件路径。
public void decodeFile(String filePath) {
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, o);
// The new size we want to scale to
final int REQUIRED_SIZE = 1024;
// Find the correct scale value. It should be the power of 2.
int width_tmp = o.outWidth, height_tmp = o.outHeight;
int scale = 4;
while (true) {
if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE)
break;
width_tmp /= 2;
height_tmp /= 2;
scale *= 2;
}
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
bmp = BitmapFactory.decodeFile(filePath, o2); // this bmp object of Bitmap is global and you can set it to your ImageView.
}
现在你可以在这个之后调用这个函数
String path= cursor.getString(column);
decodeFile(path);