Skip to content

Commit

Permalink
feat(host-lib): 支持在插件中请求动态权限(target 23+)
Browse files Browse the repository at this point in the history
  • Loading branch information
shaobin0604 committed Apr 29, 2019
1 parent 8898add commit e073b52
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ apply from: "version.gradle"

buildscript {
repositories {
mavenLocal()
// mavenLocal()
maven {
url 'http://maven.aliyun.com/'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ public class ActivityHostProxy extends FragmentActivity implements Cloneable {
private static final Method ON_BACK_PRESSED;
private static final Method ON_ACTIVITY_RESULT;
private static final Method ON_NEW_INTENT;
private static final Method ON_REQUEST_PERMISSIONS_RESULT;

private static final Field M_FRAGMENTS;
private static final Field M_HOST;
Expand Down Expand Up @@ -112,6 +113,7 @@ public class ActivityHostProxy extends FragmentActivity implements Cloneable {
ON_ACTIVITY_RESULT = ReflectUtils.getMethod(activityClass, "onActivityResult",
integerClass, integerClass, intentClass);
ON_NEW_INTENT = ReflectUtils.getMethod(activityClass, "onNewIntent", intentClass);
ON_REQUEST_PERMISSIONS_RESULT = ReflectUtils.getMethod(activityClass, "onRequestPermissionsResult", int.class, String[].class, int[].class);

M_FRAGMENTS = ReflectUtils.getField(FragmentActivity.class, "mFragments");
M_HOST = ReflectUtils.getField(FragmentController.class, "mHost");
Expand Down Expand Up @@ -745,6 +747,14 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callTargetActivityMethod(ON_ACTIVITY_RESULT, "onActivityResult", requestCode, resultCode, data);
}

@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
callTargetActivityMethod(ON_REQUEST_PERMISSIONS_RESULT, "onRequestPermissionsResult", requestCode, permissions, grantResults);
}

private Object callTargetActivityMethod(Method method, String methodName, Object... args) {
VLog.d("callTargetActivityMethod: %s, args: %s", methodName, Arrays.toString(args));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,12 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//共享window,FragmentManager后不需要调用super方法,否则会引起一些错误
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
//共享window,FragmentManager后不需要调用super方法,否则会引起一些错误
}

@Override
public View findViewById(@IdRes int id) {
return mContentProxy.getContext().findViewById(id);
Expand Down

0 comments on commit e073b52

Please sign in to comment.