问题描述
我只想知道有没有什么方法可以仅使用意图启动后置摄像头。我不想使用intent.putextra 的东西。所以基本上我的代码应该是这样的
final Intent cameraIntent = new Intent();
cameraIntent.putExtra("android.intent.extras.CAMERA_FACING",0);
cameraIntent.setPackage(defaultCameraPackage);
cameraIntent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,cameraUrl);
((Activity) mContext).startActivityForResult(cameraIntent,CHOOSE_PHOTO_INTENT);
但上面的代码有时会启动前置摄像头。我想直接启动后置摄像头。如果可以在 Android 中帮助我解决这个问题。
public void defaultpackage() {
PackageManager packageManager = mContext.getPackageManager();
List<ApplicationInfo> list = packageManager
.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
for (int n = 0; n < list.size(); n++) {
if ((list.get(n).flags & ApplicationInfo.FLAG_SYstem) == 1) {
if (list.get(n).loadLabel(packageManager).toString()
.equalsIgnoreCase("Camera")) {
defaultCameraPackage = list.get(n).packageName;
Log.e("package","" + defaultCameraPackage);
break;
}
}
}
}
解决方法
如果您正在寻找可靠的方法:没有办法。请注意,Intent
正在启动第 3 方应用程序,它可能会读取和尊重 Bundle
参数,也可能不会...取决于设备和默认相机应用程序设置。这就是为什么您的代码可能无法在任何地方工作。但您仍然可以尝试使用一些额外的 Intent
参数,例如:
cameraIntent.putExtra("android.intent.extras.LENS_FACING_FRONT",0)
cameraIntent.putExtra("android.intent.extra.USE_FRONT_CAMERA",false)
你的和上面的两个参数可能涵盖大多数情况/应用,但你仍然不能 100% 确定
,试试这个兄弟,它对我有用。
val intent : Intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
intent.putExtra("android.intent.extras.CAMERA_FACING",0)