我遇到了同样的问题。如果您看到该示例附带已编译的 SdKversion 22,因为在较新的版本中,用户必须明确授予 Camera 权限。我的项目通过向我的 android 应用程序添加一些代码来使用 API 25。就我而言,当用户单击 FloatingActionButton 时,我在打开 vuforia 活动之前请求了相机权限:
FloatingActionButton flb=(FloatingActionButton)findViewById(R.id.floatingActionButton2);
flb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
}
else
{
Intent myIntent = new Intent(MainActivity.this, VideoPlayback.class);
startActivity(myIntent);
}
}
});
VideoPlayback 是使用高级示例中包含的 vuforia 的 AR 的活动。在这种情况下,您必须收听 onRequestPermissionsResult,因为我们必须检查用户的回答。
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
// Begin monitoring for Aruba Beacon-based Campaign events
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 0) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED) {
Intent myIntent = new Intent(MainActivity.this, VideoPlayback.class);
startActivity(myIntent);
}
}
}
在 onRequestPermissionsResult 我们检查答案是否是肯定的,如果是,我们打开活动。
我希望它也适合你。