From 85031e89b6e68035af006ea74903705880573f2b Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Wed, 13 Sep 2017 18:23:55 +0800 Subject: [PATCH] =?UTF-8?q?Android=206.0=E5=8F=8A=E4=BB=A5=E4=B8=8A=20?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 + .../main/java/com/gh/base/BaseActivity.java | 44 +++++++- .../gh/base/OnPermissionsSuccessListener.java | 9 ++ .../com/gh/base/fragment/BaseFragment.java | 22 +++- .../java/com/gh/common/util/DeviceUtils.java | 11 +- .../java/com/gh/common/util/DialogUtils.java | 58 +++++++++- .../java/com/gh/gamecenter/MainActivity.java | 104 +---------------- .../gh/gamecenter/SplashScreenActivity.java | 106 +++++++++++------- .../gamecenter/download/FileSendFragment.java | 14 ++- dependencies.gradle | 4 +- 10 files changed, 223 insertions(+), 151 deletions(-) create mode 100644 app/src/main/java/com/gh/base/OnPermissionsSuccessListener.java diff --git a/app/build.gradle b/app/build.gradle index 2c5e8e9a7d..8143d79f20 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -218,6 +218,8 @@ dependencies { compile "com.tencent.bugly:crashreport:${bugly}" + compile "pub.devrel:easypermissions:${easypermissions}" + compile project(':libraries:LGLibrary') compile project(':libraries:MiPush') compile project(':libraries:MTA') diff --git a/app/src/main/java/com/gh/base/BaseActivity.java b/app/src/main/java/com/gh/base/BaseActivity.java index 6fee4540f8..da8bfdd293 100644 --- a/app/src/main/java/com/gh/base/BaseActivity.java +++ b/app/src/main/java/com/gh/base/BaseActivity.java @@ -2,6 +2,8 @@ package com.gh.base; import android.os.Build; import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; @@ -28,13 +30,16 @@ import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; +import java.util.List; import butterknife.ButterKnife; +import pub.devrel.easypermissions.AfterPermissionGranted; +import pub.devrel.easypermissions.EasyPermissions; import static com.gh.common.util.EntranceUtils.KEY_DATA; import static com.gh.common.util.EntranceUtils.KEY_ENTRANCE; -public abstract class BaseActivity extends BaseAppCompatToolBarActivity { +public abstract class BaseActivity extends BaseAppCompatToolBarActivity implements EasyPermissions.PermissionCallbacks{ protected String mEntrance; private boolean mIsPause; @@ -178,4 +183,41 @@ public abstract class BaseActivity extends BaseAppCompatToolBarActivity { // DownloadManager.getInstance(this).initGameMap(); } + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); + } + + @Override + public void onPermissionsDenied(int requestCode, List perms) { + + } + + @Override + public void onPermissionsGranted(int requestCode, List perms) { + + } + + // tag: 防止一个页面可以多次调用 + protected void checkPermissions(String[] permissions, String tag) { + if (EasyPermissions.hasPermissions(this, permissions)) { + onPermissionsSuccess(tag); + } else { + checkAndRequestPermission(permissions, tag); + } + } + + private final static int REQUEST_PERMISSION_TAG = 10012; + @AfterPermissionGranted(REQUEST_PERMISSION_TAG) + private void checkAndRequestPermission(String[] permissions, String tag) { + if (EasyPermissions.hasPermissions(this, permissions)) { + onPermissionsSuccess(tag); + } else { + ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSION_TAG); + } + } + + // 权限申请成功回调 + protected void onPermissionsSuccess(String tag){} } diff --git a/app/src/main/java/com/gh/base/OnPermissionsSuccessListener.java b/app/src/main/java/com/gh/base/OnPermissionsSuccessListener.java new file mode 100644 index 0000000000..b138bf969f --- /dev/null +++ b/app/src/main/java/com/gh/base/OnPermissionsSuccessListener.java @@ -0,0 +1,9 @@ +package com.gh.base; + +/** + * Created by khy on 13/09/17. + */ + +public interface OnPermissionsSuccessListener { + void onSuccess(); +} diff --git a/app/src/main/java/com/gh/base/fragment/BaseFragment.java b/app/src/main/java/com/gh/base/fragment/BaseFragment.java index 545f6a0f1f..808c95c125 100644 --- a/app/src/main/java/com/gh/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/gh/base/fragment/BaseFragment.java @@ -2,6 +2,7 @@ package com.gh.base.fragment; import android.os.Bundle; import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v4.app.Fragment; @@ -21,7 +22,10 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.util.List; + import butterknife.ButterKnife; +import pub.devrel.easypermissions.EasyPermissions; import rx.Observable; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; @@ -31,7 +35,7 @@ import rx.schedulers.Schedulers; * Fragment 基类 */ public abstract class BaseFragment extends Fragment implements OnRequestCallBackListener, - View.OnClickListener, ToolbarController { + View.OnClickListener, ToolbarController, EasyPermissions.PermissionCallbacks { // TODO private view protected View view; @@ -166,4 +170,20 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); } + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); + } + + @Override + public void onPermissionsDenied(int requestCode, List perms) { + + } + + @Override + public void onPermissionsGranted(int requestCode, List perms) { + + } + } diff --git a/app/src/main/java/com/gh/common/util/DeviceUtils.java b/app/src/main/java/com/gh/common/util/DeviceUtils.java index b01b0176cf..8226ef49da 100644 --- a/app/src/main/java/com/gh/common/util/DeviceUtils.java +++ b/app/src/main/java/com/gh/common/util/DeviceUtils.java @@ -3,9 +3,11 @@ package com.gh.common.util; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.net.wifi.WifiManager; import android.os.Build; import android.provider.Settings; import android.telephony.TelephonyManager; +import android.text.TextUtils; import com.gh.gamecenter.kuaichuan.WifiMgr; import com.lightgame.utils.Util_System_Phone_State; @@ -37,7 +39,7 @@ public class DeviceUtils { JSONObject object = new JSONObject(); object.put("os", "Android"); object.put("imei", Util_System_Phone_State.getDeviceId(context)); - object.put("mac", getMac()); + object.put("mac", getMac(context)); object.put("model", MODEL); object.put("manufacturer", MANUFACTURER); object.put("android_id", Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)); @@ -54,7 +56,7 @@ public class DeviceUtils { try { object.put("IMEI", Util_System_Phone_State.getDeviceId(context)); object.put("ANDROID_ID", Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID)); - object.put("MAC", getMac()); + object.put("MAC", getMac(context)); object.put("MTA_ID", StatConfig.getMid(context)); object.put("MANUFACTURER", MANUFACTURER); object.put("MODEL", MODEL); @@ -67,7 +69,7 @@ public class DeviceUtils { return object; } - private static String getMac() { + private static String getMac(Context context) { String str = ""; String macSerial = ""; try { @@ -96,6 +98,9 @@ public class DeviceUtils { } } + if (TextUtils.isEmpty(macSerial)) { // 备用方案 + macSerial = ((WifiManager) context.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo().getMacAddress(); + } return macSerial; } diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 4b51049b37..c111f518cb 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -400,8 +400,8 @@ public class DialogUtils { }, null); } - public static void showDownloadDialog(Context context, ConfirmListener listener, CancelListener cancelListener){ - showWarningDialog(context, "下载提示", "您当前使用的网络为2G/3G/4G,开始下载将会消耗移动流量,确定下载?", "取消", "确定", listener, cancelListener); + public static void showDownloadDialog(Context context, ConfirmListener listener, CancelListener cancelListener) { + showWarningDialog(context, "下载提示", "您当前使用的网络为2G/3G/4G,开始下载将会消耗移动流量,确定下载?", "取消", "确定", listener, cancelListener); } public static void showDownloadDialog(Context context, ConfirmListener listener) { @@ -501,6 +501,7 @@ public class DialogUtils { /** * 取消按钮灰色 + * * @param context * @param title * @param message @@ -543,6 +544,59 @@ public class DialogUtils { } + /** + * 权限弹窗 + * @param context + * @param title + * @param message + * @param positive + * @param negative + * @param cmListener + * @param clListener + */ + public static void showPermissionDialog(Context context, String title, CharSequence message + , String positive, String negative, final ConfirmListener cmListener, final CancelListener clListener) { + + AlertDialog alertDialog = new AlertDialog.Builder(context, R.style.GhAlertDialog) + .setTitle(title) + .setMessage(message) + .setPositiveButton(positive, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (cmListener != null) { + cmListener.onConfirm(); + } + } + }) + .setNegativeButton(negative, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (clListener != null) { + clListener.onCancel(); + } + } + }) + .setCancelable(false) + .create(); + + alertDialog.show(); + + TextView mesage = (TextView) alertDialog.findViewById(android.R.id.message); + Button positiveBtn = alertDialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE); + Button negativeBtn = alertDialog.getButton(android.app.AlertDialog.BUTTON_NEGATIVE); + + positiveBtn.setTextSize(13); + positiveBtn.setTextColor(ContextCompat.getColor(context, R.color.theme)); + negativeBtn.setTextSize(13); + negativeBtn.setTextColor(ContextCompat.getColor(context, R.color.hint)); + if (mesage != null) { + mesage.setTextSize(13); + mesage.setTextColor(ContextCompat.getColor(context, R.color.title)); + mesage.setLineSpacing(1.0f, 1.3f); + } + + } + /** * 特殊:验证手机号码 */ diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 5edb650bc4..9d5429140b 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -33,7 +33,6 @@ import com.gh.common.util.GameUtils; import com.gh.common.util.LoginUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; -import com.gh.common.util.TokenUtils; import com.gh.common.util.TrafficUtils; import com.gh.download.DownloadManager; import com.gh.gamecenter.db.info.ConcernInfo; @@ -46,7 +45,6 @@ import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBShowDialog; import com.gh.gamecenter.eventbus.EBSkip; -import com.gh.gamecenter.eventbus.EBUISwitch; import com.gh.gamecenter.fragment.MainFragment; import com.gh.gamecenter.manager.ConcernManager; import com.gh.gamecenter.manager.DataCollectionManager; @@ -54,7 +52,6 @@ import com.gh.gamecenter.manager.FilterManager; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.manager.PackageManager; import com.gh.gamecenter.manager.UpdateManager; -import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.ObservableUtil; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -634,8 +631,8 @@ public class MainActivity extends BaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // 初始化gameMap -// DownloadManager.getInstance(this).initGameMap(); + // 上传数据 + DataCollectionManager.getInstance(getApplicationContext()).upload(); sp = PreferenceManager.getDefaultSharedPreferences(this); isNewFirstLaunch = sp.getBoolean("isNewFirstLaunchV" + PackageUtils.getVersionName(this), true); @@ -674,51 +671,11 @@ public class MainActivity extends BaseActivity { // 检查是否有权限读取应用列表 checkPermission(); - if (isNewFirstLaunch || TokenUtils.getDeviceId(this) == null) { -// AppController.MAIN_EXECUTOR.execute(new Runnable() { -// @Override -// public void run() { - // 注册设备 -// TokenUtils.register(MainActivity.this.getApplicationContext()); -// TokenUtils.getToken(MainActivity.this.getApplicationContext(), false) // TODO 是否移除 -// .subscribeOn(Schedulers.io()) -// .observeOn(AndroidSchedulers.mainThread()) -// .subscribe(new Response() { -// @Override -// public void onResponse(String token) { -// TokenUtils.checkDeviceInfo(MainActivity.this.getApplicationContext(), token); -// } -// }); -// updateUserGhzs(); - -// initConcern(); // 初始化关注 移到登录成功后调用 -// } -// }); - } else { -// updateUserGhzs(); - } - // 执行跳转事件 handler.postDelayed(skipRun, 500); -// if (sp.getBoolean("changeDefaultIcon", false) && sp.getInt("default_user_icon", 0) != 0) { -// postDefaultIcon(sp.getInt("default_user_icon", 0)); -// } - getSuggestionType(); -// if (LoginUtils.getUserInfo(this) != null && getIntent() != null && getIntent().getBundleExtra(KEY_DATA) != null -// && getIntent().getBundleExtra(KEY_DATA).getBoolean("exceptionReStart", false)) { -// DialogUtils.showWarningDialog(this, "发生闪退", "光环助手刚刚发生了闪退,反馈一下(只需简单描述你刚才的操作)以帮忙我们更好地修复问题?" -// , "暂不", " 反馈一下" -// , new DialogUtils.ConfirmListener() { -// @Override -// public void onConfirm() { -// SuggestionActivity.startSuggestionActivity(MainActivity.this, 3, null, null); -// } -// }, null); -// } - final String message = Config.getExceptionMsg(this); if (LoginUtils.getUserInfo(this) != null && !TextUtils.isEmpty(message)) { Config.setExceptionMsg(this, null); @@ -739,9 +696,6 @@ public class MainActivity extends BaseActivity { super.onDestroy(); DownloadManager.getInstance(this).removeObserver(dataWatcher); -// if (sp.getBoolean("changeDefaultIcon", false) && sp.getInt("default_user_icon", 0) != 0) { -// postDefaultIcon(sp.getInt("default_user_icon", 0)); -// } handler.removeCallbacksAndMessages(null); } @@ -762,7 +716,7 @@ public class MainActivity extends BaseActivity { String string = response.string(); JSONObject object = new JSONObject(string); String deviceId = object.getString("device_id"); - Utils.log("========::" + deviceId); + Utils.log("========checkDevice::" + deviceId); if (!TextUtils.isEmpty(deviceId)) { oldUserSkip(deviceId); } @@ -817,35 +771,6 @@ public class MainActivity extends BaseActivity { } - private void getConcernDigest(final List arrGameId) { - final ArrayList concernDigest = new ArrayList<>(); - - if (arrGameId.size() == 0) { - EventBus.getDefault().post(new EBUISwitch("NewsWrapperFragment", -2)); // 没有关注 - } - - List> list = new ArrayList<>(); - for (String gameId : arrGameId) { - list.add(RetrofitManager.getApi().getGameDigest(gameId)); - } - Observable.merge(list) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onCompleted() { - concernManager.addByList(concernDigest); - } - - @Override - public void onNext(GameEntity response) { - concernDigest.add(response); - } - - - }); - } - private void checkPermission() { List installedList = getPackageManager().getInstalledPackages(0); if (installedList.isEmpty()) { @@ -1036,27 +961,4 @@ public class MainActivity extends BaseActivity { }); } - // 提交默认头像 - private void postDefaultIcon(final int i) { // TODO 是否删除 - Map params = new HashMap<>(); - params.put("icon_key", "icon" + i); - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - new JSONObject(params).toString()); - RetrofitManager.getUser() - .postDefaultIcon(LoginUtils.getToken(this), body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new JSONObjectResponse() { - @Override - public void onResponse(JSONObject response) { - sp.edit().putBoolean("changeDefaultIcon", false).apply(); - } - - @Override - public void onFailure(HttpException e) { - } - } - ); - } - } diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index 9352c1416d..76426c50d2 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -1,5 +1,6 @@ package com.gh.gamecenter; +import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -8,6 +9,7 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; +import android.provider.Settings; import android.support.v4.content.ContextCompat; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; @@ -19,6 +21,7 @@ import android.widget.TextView; import com.gh.base.AppController; import com.gh.base.BaseActivity; +import com.gh.common.util.DialogUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.TagUtils; @@ -26,7 +29,6 @@ import com.gh.common.util.TimestampUtils; import com.gh.common.util.TokenUtils; import com.gh.download.DownloadManager; import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.manager.FilterManager; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -46,6 +48,7 @@ import java.util.Date; import java.util.List; import java.util.Locale; +import pub.devrel.easypermissions.EasyPermissions; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; @@ -63,6 +66,10 @@ public class SplashScreenActivity extends BaseActivity { private boolean isFirst; private boolean isNewFirstLaunch; + private final static int REQUEST_PERMISSION_TAG = 10012; + private String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.READ_PHONE_STATE}; + public static Intent[] getRedirectIntents(Context context, Uri uri) { List intentList = new ArrayList<>(); if (AppManager.getInstance().isEmpty()) { @@ -111,20 +118,10 @@ public class SplashScreenActivity extends BaseActivity { isFirst = true; -// if (isNewFirstLaunch || mSharedPreferences.getInt("actionbar_height", 0) != 0) { if (isNewFirstLaunch) { setTheme(R.style.AppGuideTheme); } else { setTheme(R.style.AppFullScreenTheme); - // 自定义ActionBar -// ActionBar actionBar = getActionBar(); -// if (actionBar != null) { -// actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); -// RelativeLayout relativeLayout = new RelativeLayout(this); -// relativeLayout.setBackgroundResource(R.color.theme); -// LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); -// actionBar.setCustomView(relativeLayout, params);// 自定义ActionBar布局 -// } } if (isNewFirstLaunch) { @@ -135,9 +132,7 @@ public class SplashScreenActivity extends BaseActivity { if (tintManager != null) { tintManager.setTintAlpha(0); } - } - - else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { SystemBarTintManager tintManager = getTintManager(); if (tintManager != null) { tintManager.setStatusBarTintColor(ContextCompat.getColor(getApplicationContext(), R.color.theme)); @@ -169,7 +164,7 @@ public class SplashScreenActivity extends BaseActivity { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { - if (isNewFirstLaunch) { + if (isNewFirstLaunch && EasyPermissions.hasPermissions(this, permissions)) { launch(); } else { return true; @@ -229,36 +224,69 @@ public class SplashScreenActivity extends BaseActivity { // 更新本地时间 TokenUtils.getTime(this); - // 上传数据 - DataCollectionManager.getInstance(getApplicationContext()).upload(); +// // 上传数据 TODO 基于上报信息涉及用户权限 防止由于未授予权限导致的闪退 移动MainActivity上报 +// DataCollectionManager.getInstance(getApplicationContext()).upload(); // 解决助手奔溃后导致的下载状态保留问题 DownloadManager.getInstance(this).checkAll(); - // 不是第一次启动 - if (!isNewFirstLaunch) { -// int height = mSharedPreferences.getInt("actionbar_height", 0); -// if (height == 0) { -// final ActionBar actionBar = getActionBar(); -// if (actionBar != null) { -// mSharedPreferences.edit().putInt("actionbar_height", actionBar.getHeight()).apply(); -// } -// } - long end = System.currentTimeMillis() - start; - if (end < 3000) { - getWindow().getDecorView().postDelayed(new Runnable() { - @Override - public void run() { - launch(); - } - }, 3000 - end); - } else { - launch(); - } + checkPermissions(permissions, null); + } + } + + @Override + protected void onPermissionsSuccess(String tag) { + if (!isNewFirstLaunch) { + long end = System.currentTimeMillis() - start; + if (end < 3000) { + getWindow().getDecorView().postDelayed(new Runnable() { + @Override + public void run() { + launch(); + } + }, 3000 - end); + } else { + launch(); } } } + @Override + public void onPermissionsDenied(int requestCode, List perms) { + if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) { // 设置"不要再询问",必须手动到系统设置授权 + DialogUtils.showPermissionDialog(this, "重要提醒", + "请授予光环助手权限,否则将无法使用\n请点击\"设置\"-\"应用\"-\"光环助手\"-\"权限\"-打开所需权限", "去设置", "退出", + new DialogUtils.ConfirmListener() { + @Override + public void onConfirm() { + // TODO 跳转至当前应用设置界面时,当前app自动退出 + Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + intent.setData(Uri.parse("package:" + getPackageName())); + startActivity(intent); + } + }, new DialogUtils.CancelListener() { + @Override + public void onCancel() { + finish(); + } + }); + } else { + DialogUtils.showPermissionDialog(this, "重要提醒", + "请授予光环助手权限,否则将无法使用", "重试", "退出", + new DialogUtils.ConfirmListener() { + @Override + public void onConfirm() { + checkPermissions(permissions, null); + } + }, new DialogUtils.CancelListener() { + @Override + public void onCancel() { + finish(); + } + }); + } + } + // 检查下载文件夹下是否有旧版本的光环助手的包,有则删除 private void checkOldGhFile() { File folder = new File(FileUtils.getDownloadDir(this) + File.separator); @@ -353,7 +381,9 @@ public class SplashScreenActivity extends BaseActivity { tvSkip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - launch(); + if (EasyPermissions.hasPermissions(SplashScreenActivity.this, permissions)) { + launch(); + } } }); diff --git a/app/src/main/java/com/gh/gamecenter/download/FileSendFragment.java b/app/src/main/java/com/gh/gamecenter/download/FileSendFragment.java index f0339211fe..6ede2fe27f 100644 --- a/app/src/main/java/com/gh/gamecenter/download/FileSendFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/FileSendFragment.java @@ -1,5 +1,6 @@ package com.gh.gamecenter.download; +import android.Manifest; import android.content.Intent; import android.os.Handler; import android.text.Html; @@ -20,6 +21,9 @@ import com.gh.gamecenter.ShareGhActivity; */ public class FileSendFragment extends BaseFragment { + private String[] permissions = {Manifest.permission.ACCESS_WIFI_STATE}; + + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -54,10 +58,11 @@ public class FileSendFragment extends BaseFragment { TextView shareGh = (TextView) view.findViewById(R.id.share_gh); shareGh.setText(Html.fromHtml(StringUtils.buildString("", "好友还没安装光环助手?请点这里", ""))); - shareGh.setOnClickListener(new View.OnClickListener() { + shareGh.setOnClickListener(new View.OnClickListener() { // TODO 需要申请权限 @Override public void onClick(View v) { - getActivity().startActivity(ShareGhActivity.getIntent(getContext())); + Intent intent = ShareGhActivity.getIntent(getContext()); + getActivity().startActivity(intent); } }); @@ -66,8 +71,9 @@ public class FileSendFragment extends BaseFragment { cleanApk.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View v) { - getActivity().startActivity(CleanApkActivity.getIntent(getContext())); + public void onClick(View v) { // TODO 需要申请权限 + Intent intent = CleanApkActivity.getIntent(getContext()); + getActivity().startActivity(intent); } }); } diff --git a/dependencies.gradle b/dependencies.gradle index d86fa1e6b0..fd63a14270 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -4,7 +4,7 @@ ext { compileSdkVersion = 26 minSdkVersion = 14 // TODO fix permission/ target 23 will cause permission issues - targetSdkVersion = 22 + targetSdkVersion = 23 // application info versionCode = 21 @@ -53,4 +53,6 @@ ext { tinker = "1.7.9" bugly = "2.6.5" + // 权限申请库 + easypermissions = "1.0.0" } \ No newline at end of file