Skip to content

Commit a8a02b8

Browse files
author
cuizhen
committed
优化代码
1 parent 235bed8 commit a8a02b8

File tree

2 files changed

+95
-24
lines changed

2 files changed

+95
-24
lines changed

anypermission/src/main/java/per/goweii/anypermission/AnyPermission.java

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@
33
import android.app.Activity;
44
import android.content.Context;
55
import android.net.Uri;
6-
import android.os.Build;
76
import android.support.annotation.NonNull;
87
import android.support.v4.app.Fragment;
98

109
import com.yanzhenjie.permission.AndPermission;
11-
import com.yanzhenjie.permission.option.Option;
1210
import com.yanzhenjie.permission.runtime.Permission;
1311

1412
import java.io.File;
@@ -21,8 +19,7 @@
2119
*/
2220
public class AnyPermission {
2321

24-
private final Context mContext;
25-
private final Option mOption;
22+
private final ContextHolder mContextHolder;
2623

2724
public static AnyPermission with(@NonNull final Context context) {
2825
return new AnyPermission(context);
@@ -41,60 +38,52 @@ public static AnyPermission with(@NonNull final android.app.Fragment fragment) {
4138
}
4239

4340
private AnyPermission(final Context context){
44-
mContext = context;
45-
mOption = AndPermission.with(context);
41+
mContextHolder = new ContextHolder(context);
4642
}
4743

4844
private AnyPermission(final Activity activity){
49-
mContext = activity;
50-
mOption = AndPermission.with(activity);
45+
mContextHolder = new ContextHolder(activity);
5146
}
5247

5348
private AnyPermission(final Fragment fragment){
54-
mContext = fragment.getContext();
55-
mOption = AndPermission.with(fragment);
49+
mContextHolder = new ContextHolder(fragment);
5650
}
5751

5852
private AnyPermission(final android.app.Fragment fragment){
59-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
60-
mContext = fragment.getContext();
61-
} else {
62-
mContext = fragment.getActivity();
63-
}
64-
mOption = AndPermission.with(fragment);
53+
mContextHolder = new ContextHolder(fragment);
6554
}
6655

6756
public String name(String permission) {
68-
return Permission.transformText(mContext, permission).get(0);
57+
return Permission.transformText(mContextHolder.getContext(), permission).get(0);
6958
}
7059

7160
public Uri fileUri(File file) {
72-
return AndPermission.getFileUri(mContext, file);
61+
return AndPermission.getFileUri(mContextHolder.getContext(), file);
7362
}
7463

7564
public RuntimeRequester runtime(int requestCodeWhenGoSetting) {
76-
return new RuntimeRequester(mOption, mContext, requestCodeWhenGoSetting);
65+
return new RuntimeRequester(mContextHolder.getOption(), mContextHolder.getContext(), requestCodeWhenGoSetting);
7766
}
7867

7968
public InstallRequester install(File apkFile) {
80-
return new InstallRequester(mOption, apkFile);
69+
return new InstallRequester(mContextHolder.getOption(), apkFile);
8170
}
8271

8372
public OverlayRequester overlay() {
84-
return new OverlayRequester(mOption);
73+
return new OverlayRequester(mContextHolder.getOption());
8574
}
8675

8776
@Deprecated
8877
public SettingRequester setting() {
89-
return new SettingRequester(mOption);
78+
return new SettingRequester(mContextHolder.getOption());
9079
}
9180

9281
public NotificationShowRequester notificationShow() {
93-
return new NotificationShowRequester(mOption);
82+
return new NotificationShowRequester(mContextHolder.getOption());
9483
}
9584

9685
public NotificationAccessRequester notificationAccess() {
97-
return new NotificationAccessRequester(mOption);
86+
return new NotificationAccessRequester(mContextHolder.getOption());
9887
}
9988

10089
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package per.goweii.anypermission;
2+
3+
import android.app.Activity;
4+
import android.content.Context;
5+
import android.os.Build;
6+
import android.support.annotation.NonNull;
7+
import android.support.v4.app.Fragment;
8+
9+
import com.yanzhenjie.permission.AndPermission;
10+
import com.yanzhenjie.permission.option.Option;
11+
12+
/**
13+
* 描述:
14+
*
15+
* @author Cuizhen
16+
* @date 2019/3/19
17+
*/
18+
public class ContextHolder {
19+
20+
private final Context mContext;
21+
private final Activity mActivity;
22+
private final Fragment mSupportFragment;
23+
private final android.app.Fragment mFragment;
24+
25+
ContextHolder(@NonNull final Context context) {
26+
mContext = context;
27+
mActivity = null;
28+
mSupportFragment = null;
29+
mFragment = null;
30+
}
31+
32+
ContextHolder(@NonNull final Activity activity) {
33+
mContext = null;
34+
mActivity = activity;
35+
mSupportFragment = null;
36+
mFragment = null;
37+
}
38+
39+
ContextHolder(@NonNull final Fragment fragment) {
40+
mContext = null;
41+
mActivity = null;
42+
mSupportFragment = fragment;
43+
mFragment = null;
44+
}
45+
46+
ContextHolder(@NonNull final android.app.Fragment fragment) {
47+
mContext = null;
48+
mActivity = null;
49+
mSupportFragment = null;
50+
mFragment = fragment;
51+
}
52+
53+
public Option getOption(){
54+
if (mContext != null) {
55+
return AndPermission.with(mContext);
56+
} else if (mActivity != null) {
57+
return AndPermission.with(mActivity);
58+
} else if (mSupportFragment != null) {
59+
return AndPermission.with(mSupportFragment);
60+
} else if (mFragment != null) {
61+
return AndPermission.with(mFragment);
62+
}
63+
return null;
64+
}
65+
66+
public Context getContext(){
67+
if (mContext != null) {
68+
return mContext;
69+
} else if (mActivity != null) {
70+
return mActivity;
71+
} else if (mSupportFragment != null) {
72+
return mSupportFragment.getContext();
73+
} else if (mFragment != null) {
74+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
75+
return mFragment.getContext();
76+
} else {
77+
return mFragment.getActivity();
78+
}
79+
}
80+
return null;
81+
}
82+
}

0 commit comments

Comments
 (0)