2017-07-17 128 views
1

我正在使用Android Studio创建应用程序。我希望系统能够访问手机的相机。它在模拟器上工作,我可以拍照并将图像设置为ImageView中的图像。Android相机适用于模拟器,但不适用于手机?

但是,我开始使用手机运行并且相机无法使用。通常,当我点击ImageButton时,相机会打开,但现在,它会将我重定向到以前打开的页面。

这里是我的代码:

public class DriverActivity extends AppCompatActivity { 

Button btnDriverBack, btnDriverSubmit; 
ImageButton ibtnDriverPhoto; 
ImageView imageDriver; 
EditText etDriverFirstName, etDriverLastName, etDriverMiddleName, etDriverBDay; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_driver); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    ibtnDriverPhoto = (ImageButton) findViewById(R.id.ibtnDriverPhoto); 
    imageDriver = (ImageView) findViewById(R.id.imageDriver); 

    etDriverFirstName = (EditText) findViewById(R.id.etDriverFirstName); 
    etDriverMiddleName = (EditText) findViewById(R.id.etDriverMiddleName); 
    etDriverLastName = (EditText) findViewById(R.id.etDriverLastName); 
    etDriverBDay = (EditText) findViewById(R.id.etDriverBDay); 

    ibtnDriverPhoto.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      Intent camera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(camera, 1); 
     } 
    }); 

    btnDriverBack = (Button) findViewById(R.id.btnDriverBack); 
    btnDriverBack.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      Intent driveBack = new Intent(DriverActivity.this, SummaryActivity.class); 
      startActivity(driveBack); 
     } 
    }); 

    btnDriverSubmit = (Button) findViewById(R.id.btnDriverSubmit); 
    btnDriverSubmit.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      Intent driverSubmit = new Intent(DriverActivity.this, CreditCardActivity.class); 
      startActivity(driverSubmit); 
     } 
    }); 

} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == 1) 
    { 
     Bitmap license = (Bitmap) data.getExtras().get("data"); 
     imageDriver.setImageBitmap(license); 
    } 
} 

我已经设置了正确的用途权限。任何帮助将不胜感激,谢谢! :)

+2

我觉得你的手机的Android版本>棒棒糖。因此,您必须请求运行时权限才能使用设备相机。 –

+0

@SudheeshR谢谢,我的版本确实比棒棒糖更高! :) – Justin

回答

0

第一次尝试这种

private final int REQUEST_CAMERA_USAGE = 200; 

if (Build.VERSION.SDK_INT >= 21) { 
      int permissionCheck = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA); 
      if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
       ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_USAGE); 
      } else { 

      } 
     } 



@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
    switch (requestCode) { 
      case REQUEST_CAMERA_USAGE: 
      if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) { 

      } else { 
       Toast.makeText(getApplicationContext(), "This Permission is needed for the app to work perfectly!", Toast.LENGTH_SHORT).show(); 
      } 
     default: 
      Toast.makeText(getApplicationContext(), "Something went wrong", Toast.LENGTH_SHORT).show(); 
      break; 
    } 
} 
0

,如果你有上述棒棒糖的版本,则增加运行时间许可

0

要检查它是否是一个权限问题去设置 - > your_app->权限和手动设置为true,如果这个问题解决了再加入运行打开相机之前,您的代码中的权限。

相关问题