0

次のコードを使用して、アプリからAndroidのデフォルトのビデオカメラを開こうとしています:

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

しかし、私の 2 台の電話 (Samsung Note 2 と Google Pixel) では、代わりに画像カメラが開きます。マニフェストに次の権限があります。

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

この問題の原因は何ですか? また、実行時に許可を要求しました。

4

3 に答える 3

-1

次のコードを追加する必要があります。デバイスに 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);
    }

アプリに STORAGE を使用する権限がある場合は、STORAGE を開きます。

アプリに STORAGE の使用権限がない場合は、システム ダイアログが開きます。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 を参照してください。

于 2016-11-15T18:23:53.483 に答える