簡體   English   中英

Android默認攝像頭意圖打開攝像頭

[英]Android Default Video Camera Intent Opens Image Camera

我正在嘗試使用以下代碼從我的應用程序打開android默認攝像機:

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intent, 1);

但是在我的兩部手機(三星Note 2和Google Pixel)上,它卻打開了攝像頭。 我的清單中有此許可:

<uses-permission android:name="android.permission.CAMERA"/>

任何想法導致此問題的原因是什么? 我還要求在運行時授予許可。

您必須添加下一個代碼。 設備具有Android 6.0或更高版本。

if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        startActivityForResult(intent, 1);
    } else {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
    }

如果您的應用擁有使用存儲的權限,我們將打開存儲。

如果您的應用沒有使用存儲的許可,我們將打開系統對話框。 您可以在onRequestPermissionsResult中看到的對話框的結果。 (您必須在“活動”中覆蓋它)。

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
        @NonNull int[] grantResults) {
    if (requestCode == 2) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
            startActivityForResult(intent, 1);
        }
    }
}

我認為您必須提取下一行到private方法。

private void takePhoto() {
    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    startActivityForResult(intent, 1);
}

有關更多信息,請參見: https : //developer.android.com/training/permissions/requesting.html

添加關注權限CAPTURE_SECURE_VIDEO_OUTPUT和CAPTURE_VIDEO_OUTPUT

Android 6.0及更高版本需要在運行時詢問權限。 在此處閱讀官方文檔: https//developer.android.com/training/permissions/requesting.html

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM