android: add requestPermissions API
This commit is contained in:
@@ -18,6 +18,7 @@ package pub.doric;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
@@ -70,4 +71,13 @@ public class DoricActivity extends AppCompatActivity {
|
||||
mDoricFragment.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
int requestIndex = requestCode >> 16;
|
||||
if (requestIndex == 0 && mDoricFragment != null) {
|
||||
mDoricFragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.github.pengfeizhou.jscore.JSDecoder;
|
||||
@@ -310,4 +311,25 @@ public class DoricContext {
|
||||
public void onEnvChanged() {
|
||||
callEntity(DoricConstant.DORIC_ENTITY_ENV_CHANGE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this to take effect of {@link #onRequestPermissionsResult(int, String[], int[])}
|
||||
*/
|
||||
public void requestPermissions(@NonNull String[] permissions, int requestCode) {
|
||||
if (doricNavigator instanceof Fragment) {
|
||||
((Fragment) doricNavigator).requestPermissions(permissions, requestCode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* To use this,
|
||||
* you should use {@link #requestPermissions(String[], int)}.
|
||||
*/
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||
for (DoricJavaPlugin javaPlugin : mPluginMap.values()) {
|
||||
if (javaPlugin != null) {
|
||||
javaPlugin.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -106,4 +106,15 @@ public class DoricFragment extends Fragment {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
for (Fragment fragment : getChildFragmentManager().getFragments()) {
|
||||
fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
for (Fragment childFragment : fragment.getChildFragmentManager().getFragments()) {
|
||||
childFragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -131,6 +131,12 @@ public class DoricPanel extends FrameLayout implements LifecycleObserver {
|
||||
}
|
||||
}
|
||||
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||
if (mDoricContext != null) {
|
||||
mDoricContext.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
}
|
||||
|
||||
public interface FrameChangedListener {
|
||||
void onFrameChanged(int width, int height);
|
||||
}
|
||||
|
@@ -231,4 +231,9 @@ public class DoricPanelFragment extends Fragment implements IDoricNavigator {
|
||||
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||
doricPanel.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
doricPanel.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
}
|
||||
|
@@ -40,4 +40,11 @@ public abstract class DoricJavaPlugin extends DoricContextHolder {
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when use {@link DoricContext#requestPermissions(String[], int)}
|
||||
*/
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user