2017-07-17 133 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,如果這個問題解決了再加入運行打開相機之前,您的代碼中的權限。

相關問題