我正在尝试制作一款可在我的应用主要活动的ImageView中打开相机并拍摄照片的应用。但是当我运行相机意图时,应用程序崩溃了。
这是我的MainActivity.class
import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
static final int REQUEST_IMAGE_CAPTURE=1;
public void capture(View v){
MainActivity m=new MainActivity();
m.captureImage();
}
public void captureImage(){
Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(i.resolveActivity(getPackageManager())!=null){
startActivityForResult(i,REQUEST_IMAGE_CAPTURE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode==REQUEST_IMAGE_CAPTURE&&resultCode==RESULT_OK){
Bundle extras=data.getExtras();
Bitmap imageBitmap=(Bitmap) extras.get("data");
ImageView iv=findViewById(R.id.myimage);
iv.setImageBitmap(imageBitmap);
} }
}
任何人都会感激不尽。
答案 0 :(得分:0)
您正在创建新的MainActivity实例,仅忽略此用途。
static final int REQUEST_IMAGE_CAPTURE=1;
public void capture(View v){
captureImage();
}
并且在Manifest上添加了确保相机权限。
<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.CAMERA"/>
如果使用Android M +请求检查运行时摄像头权限。
答案 1 :(得分:0)
您永远不会创建活动的实例。
MainActivity m = new MainActivity(); //错误
Intent是允许在Android的组件之间进行通信的API。关于调用方法 - &gt;你在同一个类中调用方法,为什么你创建一个对象只是调用它。无论如何,它将使用当前参考调用。
XYZ