我試圖做一個簡單的應用程序,使用手機相機,所以我跟着這個tutorial 基本上我有一個上點擊啓動相機晶圓廠,這是結果:startActivityForResult不觸發onActivityResult
它啓動相機,因爲它應該...
如果我關閉相機它打印「REQUEST_PHOTO」和「活動結束」,但如果我拍張照片,然後點擊鼠標右鍵,接受它沒有任何反應。該按鈕不起作用,onActivityResult方法未被調用。
在這裏,你可以看到在onActivityResult方法日誌代碼的相關部分:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
if(hasCamera()) {
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
launchCamera();
}
});
}
}
...
private void launchCamera() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
...
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
...
photoURI = FileProvider.getUriForFile(...);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_TAKE_PHOTO:
Log.d("DEBUG", "REQUEST_PHOTO");
if (resultCode == RESULT_OK) {
Log.d("DEBUG", "REQUEST_PHOTO RESULT_OK");
}
break;
}
Log.d("DEBUG", "ACTIVITY FINISHED");
}
}
不僅我不理解爲什麼該方法不被調用,接受按鈕被「封鎖「但我也不明白爲什麼只有按下退出按鈕時才調用該方法。
有什麼想法?
謝謝!
哪個版本的設備正在測試此代碼。希望你有棉花糖版本之後所有必要的許可,並且有必須由用戶授予的危險許可。 –
在將URI傳遞給相機應用程序之前,您是否創建了該文件? – makovkastar
@makovkastar我創建的文件就像[tutorial](https://developer.android.com/training/camera/photobasics.html)說的那樣(createImageFile()函數) –