gpt4 book ai didi

android - onRequestPermissionsResult 未在 Activity 中调用

转载 作者:行者123 更新时间:2023-11-29 17:11:47 27 4
gpt4 key购买 nike

我搜索了类似的问题,并遵循了答案中的方法,但没有一个对我有用。我知道以前有人问过这样的问题。我正在 Android 6.0 API 23 上测试我的应用程序。当我单击“允许”时权限对话框打开,权限被授予但 onRequestPermissionsResult 从未被调用。无论我单击“允许”还是“拒绝”,屏幕上都不会出现 toast 辞。我知道我遗漏了一些东西,但我想不通。

public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
Camera camera;
Preview preview;
ImageButton buttonClick;
ProgressBar progressBar;
public static Bitmap bitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
Log.e(TAG,"onCreate");
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressbar);
buttonClick = (ImageButton) findViewById(R.id.imageButton);
progressBar.setVisibility(View.GONE);

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
//// if API >= 23 equest permisions
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(MainActivity.this,new String[]{"android.permission.CAMERA" }, 0);
}else{
moveOn();
}

buttonClick.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
progressBar.setVisibility(View.VISIBLE);
AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
mgr.setStreamMute(AudioManager.STREAM_SYSTEM, true);
preview.camera.takePicture(null, rawCallback, jpegCallback);
}
});
}

private void moveOn() {
preview = new Preview(this);
((FrameLayout) findViewById(R.id.preview)).addView(preview);
}

@Override
protected void onPause() {
super.onPause();
finish();
}



PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Log.e(TAG,"onPictureTaken in rawCallback ");
}
};

PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
Log.e(TAG,"onPictureTaken in jpegCallback ");
camera.stopPreview();
//finish();
Intent k = new Intent(MainActivity.this, ImageSet.class);
startActivity(k);
progressBar.setVisibility(View.GONE);
}
};

//This method will be called when the user will tap on allow or deny
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//Checking the request code of our request
if(requestCode == 0){

//If permission is granted
if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){

//Displaying a toast
Toast.makeText(this,"Permission granted to use Camera",Toast.LENGTH_LONG).show();
}else{
//Displaying another toast if permission is not granted
Toast.makeText(this,"Oops you just denied the permission",Toast.LENGTH_LONG).show();
}
}
}

最佳答案

@Override
protected void onPause() {
super.onPause();
finish();
}

当请求对话框显示时,此方法将回调,因为您的 Activity 失去了焦点,并且您完成了 Activity。 onRequestPermissionsResult 不会回调。

我不知道你为什么用这个方法完成你的 Activity ,所以解决方案是删除finish()语句。

关于android - onRequestPermissionsResult 未在 Activity 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40229131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com