要解决Android MediaProjection权限对话框可见性回调的问题,可以按照以下步骤进行:
private MediaProjectionManager mProjectionManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
}
private class MediaProjectionCallback extends MediaProjection.Callback {
@Override
public void onStop() {
// 在这里处理权限对话框可见性改变的逻辑
if (mProjection != null) {
mProjection.unregisterCallback(mProjectionCallback);
mProjection = null;
}
}
}
private static final int REQUEST_CODE = 100;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
MediaProjectionCallback callback = new MediaProjectionCallback();
mProjection = mProjectionManager.getMediaProjection(resultCode, data);
mProjection.registerCallback(callback, null);
}
}
@Override
protected void onStop() {
super.onStop();
if (mProjection != null) {
mProjection.stop();
}
}
这样,当MediaProjection权限对话框可见性发生改变时,onStop方法会被调用,你可以在其中处理相应的逻辑。