Commit d3e7306b by 郑鹏

更换应用权限请求

parent cd442f97
......@@ -10,6 +10,7 @@ import android.support.v4.app.ActivityCompat
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentPagerAdapter
import android.support.v4.content.ContextCompat
import android.support.v4.view.ViewPager
import android.text.TextUtils
import android.util.Log
......@@ -33,20 +34,19 @@ import cn.dankal.client.ui.home.ScanResultActivity
import cn.dankal.client.ui.home.details.MerchantDetailsActivity
import cn.dankal.client.ui.personal.PersonalFragment
import cn.dankal.client.ui.shop.ShopFragment
import cn.dankal.entities.event.LocationChangeEvent
import com.alibaba.android.arouter.facade.annotation.Route
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.tasks.OnCompleteListener
import com.google.firebase.iid.FirebaseInstanceId
import com.google.gson.Gson
import com.yanzhenjie.permission.AndPermission
import com.tbruyelle.rxpermissions2.RxPermissions
import com.yanzhenjie.permission.Permission
import com.yzq.zxinglibrary.common.Constant
import io.reactivex.disposables.Disposable
import io.reactivex.functions.Consumer
import kotlinx.android.synthetic.main.activity_main.*
import okhttp3.ResponseBody
import org.greenrobot.eventbus.EventBus
import java.lang.reflect.Field
@Route(path = MAIN)
......@@ -70,6 +70,7 @@ class MainActivity : BaseActivity(), OnMapReadyCallback {
val ITEM_CURRENT = 3
// lateinit var commonDialog: CommonDialog
private var mRxPermissions: RxPermissions? = null
private var mMap: GoogleMap? = null
......@@ -92,6 +93,8 @@ class MainActivity : BaseActivity(), OnMapReadyCallback {
}
override fun initComponents() {
mRxPermissions = RxPermissions(this)
uploadFireBaseToken()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ActivityCompat.checkSelfPermission(this,
......@@ -270,29 +273,32 @@ class MainActivity : BaseActivity(), OnMapReadyCallback {
private fun requestPermission() {
AndPermission.with(this)
.runtime()
.permission(Permission.ACCESS_COARSE_LOCATION, Permission.ACCESS_FINE_LOCATION)
.onGranted {
EventBus.getDefault().post(LocationChangeEvent())
}
.onDenied {
mRxPermissions?.let {
it.request(Permission.ACCESS_COARSE_LOCATION, Permission.ACCESS_FINE_LOCATION).subscribe({
if (it) {
//权限被允许
initLocation()
} else {
val builder = CommonDialog.Builder(this)
builder.setTitle(getString(R.string.prohibiting_access_will_affect_your_normal_use))
builder.setTitle(getString(cn.dankal.user.R.string.prohibiting_access_will_affect_your_normal_use))
builder.setNegativeButton(getString(R.string.refuse),
resources.getColor(R.color.color14)) {
ToastUtils.showShort(getString(R.string.failed_to_obtain_permission))
builder.setNegativeButton(getString(cn.dankal.user.R.string.refuse),
ContextCompat.getColor(this, cn.dankal.user.R.color.color14)) {
ToastUtils.showShort(getString(cn.dankal.user.R.string.failed_to_obtain_permission))
commonDialog.dismiss()
}
builder.setPositiveButton(getString(R.string.agree_to_open),
resources.getColor(R.color.colorPrimary)) {
builder.setPositiveButton(getString(cn.dankal.user.R.string.agree_to_open),
ContextCompat.getColor(this, cn.dankal.user.R.color.colorPrimary)) {
toSelfSetting()
commonDialog.dismiss()
}
commonDialog = builder.create()
commonDialog.show()
}.start()
}
}, {
})
}
}
......
package cn.dankal.basiclib.base.activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
......@@ -20,8 +21,10 @@ import android.view.WindowManager;
import com.alibaba.android.arouter.launcher.ARouter;
import com.yanzhenjie.permission.AndPermission;
import com.tbruyelle.rxpermissions2.RxPermissions;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import butterknife.ButterKnife;
......@@ -30,19 +33,13 @@ import cn.dankal.basiclib.DankalApplication;
import cn.dankal.basiclib.R;
import cn.dankal.basiclib.base.BaseView;
import cn.dankal.basiclib.base.callback.DKCallBackBoolean;
import cn.dankal.basiclib.constant.Constant;
import cn.dankal.basiclib.constant.ConstantsHomeType;
import cn.dankal.basiclib.eventbus.UpdateLanguageEvent;
import cn.dankal.basiclib.hook.ViewDoubleClickUtil;
import cn.dankal.basiclib.util.ActivityManager;
import cn.dankal.basiclib.util.ActivityUtils;
import cn.dankal.basiclib.util.ButtonUtil;
import cn.dankal.basiclib.util.DKHandler;
import cn.dankal.basiclib.util.LanguageUtil;
import cn.dankal.basiclib.util.SPUtils;
import cn.dankal.basiclib.util.TitleBarUtils;
import cn.dankal.basiclib.util.ToastUtils;
import cn.dankal.basiclib.util.language.LocalManageUtil;
import cn.dankal.basiclib.util.language.MultiLanguage;
import cn.dankal.basiclib.widget.CommonDialog;
import cn.dankal.basiclib.widget.TipDialog;
......@@ -51,6 +48,7 @@ import cn.dankal.basiclib.widget.titlebar.ITitleBar;
import cn.dankal.basiclib.widget.titlebar.SingleTextTitle;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
/**
* @author Dankal Android Developer
......@@ -63,6 +61,7 @@ public abstract class BaseActivity extends AppCompatActivity implements BaseView
private CompositeDisposable mDisposables = new CompositeDisposable();
protected CommonDialog commonDialog;
private LocationManager lm = null;
private RxPermissions mRxPermissions;
@Override
protected void attachBaseContext(Context newBase) {
......@@ -90,6 +89,7 @@ public abstract class BaseActivity extends AppCompatActivity implements BaseView
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ARouter.getInstance().inject(this);
mRxPermissions = new RxPermissions(this);
/* if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT) {
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
......@@ -183,15 +183,6 @@ public abstract class BaseActivity extends AppCompatActivity implements BaseView
QMUIStatusBarHelper.setStatusBarLightMode(this);
}
public void setTranslucent(Activity context, View view) {
if (view != null) {
// QMUIStatusBarHelper.translucent(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
view.setPadding(0, QMUIStatusBarHelper.getStatusbarHeight(context), 0, 0);
}
}
}
/**
* setContentView(LayoutResId)
*
......@@ -418,38 +409,47 @@ public abstract class BaseActivity extends AppCompatActivity implements BaseView
commonDialog.show();
}
@SuppressLint("CheckResult")
public void requestPermission(String permission, PermissionState permissionState) {
AndPermission.with(this)
.runtime()
.permission(permission)
.onDenied(permissions -> {
CommonDialog.Builder builder = new CommonDialog.Builder(this);
builder.setTitle(getString(R.string.prohibiting_access_will_affect_your_normal_use));
builder.setNegativeButton(getString(R.string.refuse), getResources().getColor(R.color.color14), type -> {
ToastUtils.showShort(getString(R.string.failed_to_obtain_permission));
commonDialog.dismiss();
});
builder.setPositiveButton(getString(R.string.agree_to_open), getResources().getColor(R.color.colorPrimary), new DKCallBackBoolean() {
@Override
public void action(int type) {
toSelfSetting();
commonDialog.dismiss();
if (mRxPermissions != null) {
mRxPermissions.request(permission).subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) {
if (permissionState != null) {
permissionState.onPermissionState();
}
});
commonDialog = builder.create();
commonDialog.show();
}).onGranted(data -> {
//权限被允许
if (permissionState != null) {
permissionState.onPermissionState();
}
}).start();
} else {
CommonDialog.Builder builder = new CommonDialog.Builder(BaseActivity.this);
builder.setTitle(getString(R.string.prohibiting_access_will_affect_your_normal_use));
builder.setNegativeButton(getString(R.string.refuse), getResources().getColor(R.color.color14), type -> {
ToastUtils.showShort(getString(R.string.failed_to_obtain_permission));
commonDialog.dismiss();
});
builder.setPositiveButton(getString(R.string.agree_to_open), getResources().getColor(R.color.colorPrimary), new DKCallBackBoolean() {
@Override
public void action(int type) {
toSelfSetting();
commonDialog.dismiss();
}
});
commonDialog = builder.create();
commonDialog.show();
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
});
}
}
public interface PermissionState {
public void onPermissionState();
void onPermissionState();
}
/**
......
package cn.dankal.basiclib.base.fragment;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
......@@ -14,8 +15,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import com.yanzhenjie.permission.AndPermission;
import com.tbruyelle.rxpermissions2.RxPermissions;
import butterknife.ButterKnife;
import butterknife.Unbinder;
......@@ -34,6 +34,7 @@ import cn.dankal.basiclib.widget.titlebar.ITitleBar;
import cn.dankal.basiclib.widget.titlebar.SingleTextTitle;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
/**
* description: Fragment 基类
......@@ -50,6 +51,7 @@ public abstract class BaseFragment extends Fragment implements BaseView {
protected CommonDialog commonDialog;
private CompositeDisposable mDisposables = new CompositeDisposable();
private RxPermissions mRxPermissions;
protected boolean isVisibleToUser;
@Nullable
......@@ -63,6 +65,7 @@ public abstract class BaseFragment extends Fragment implements BaseView {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
mRxPermissions = new RxPermissions(getActivity());
initComponents();
obtainData();
}
......@@ -248,39 +251,47 @@ public abstract class BaseFragment extends Fragment implements BaseView {
commonDialog.show();
}
public void requestPermission(String permission, BaseActivity.PermissionState permissionState) {
AndPermission.with(this)
.runtime()
.permission(permission)
.onDenied(permissions -> {
CommonDialog.Builder builder = new CommonDialog.Builder(getActivity());
builder.setTitle(getString(R.string.prohibiting_access_will_affect_your_normal_use));
builder.setNegativeButton(getString(R.string.refuse), getResources().getColor(R.color.color14), type -> {
ToastUtils.showShort(getString(R.string.failed_to_obtain_permission));
commonDialog.dismiss();
});
builder.setPositiveButton(getString(R.string.agree_to_open), getResources().getColor(R.color.colorPrimary), new DKCallBackBoolean() {
@SuppressLint("CheckResult")
public void requestPermission(String permission, PermissionState permissionState) {
if (mRxPermissions != null) {
mRxPermissions.request(permission).subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) {
if (aBoolean) {
if (permissionState != null) {
permissionState.onPermissionState();
}
} else {
CommonDialog.Builder builder = new CommonDialog.Builder(getActivity());
builder.setTitle(getString(R.string.prohibiting_access_will_affect_your_normal_use));
@Override
public void action(int type) {
toSelfSetting();
builder.setNegativeButton(getString(R.string.refuse), getResources().getColor(R.color.color14), type -> {
ToastUtils.showShort(getString(R.string.failed_to_obtain_permission));
commonDialog.dismiss();
}
});
commonDialog = builder.create();
commonDialog.show();
}).onGranted(data -> {
//权限被允许
if (permissionState != null) {
permissionState.onPermissionState();
}
}).start();
});
builder.setPositiveButton(getString(R.string.agree_to_open), getResources().getColor(R.color.colorPrimary), new DKCallBackBoolean() {
@Override
public void action(int type) {
toSelfSetting();
commonDialog.dismiss();
}
});
commonDialog = builder.create();
commonDialog.show();
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
});
}
}
public interface PermissionState {
public void onPermissionState();
void onPermissionState();
}
/**
......
package cn.dankal.user.login
import android.os.Handler
import android.support.v4.content.ContextCompat
import android.text.Editable
import android.text.TextUtils
import android.text.TextWatcher
......@@ -27,12 +28,13 @@ import kotlinx.android.synthetic.main.activity_login.*
import com.google.android.gms.tasks.OnCompleteListener
import com.google.firebase.iid.FirebaseInstanceId
import com.mhq.smartorder.wxapi.WXEntryActivity
import com.tbruyelle.rxpermissions2.RxPermissions
import com.tencent.mm.opensdk.modelmsg.SendAuth
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.WXAPIFactory
import com.yanzhenjie.permission.AndPermission
import com.yanzhenjie.permission.Permission
import io.reactivex.disposables.Disposable
import io.reactivex.functions.Consumer
import okhttp3.ResponseBody
......@@ -55,9 +57,13 @@ class LoginActivity : BaseActivity() {
return R.layout.activity_login
}
private var mRxPermissions: RxPermissions? = null
override fun initComponents() {
addSingleTitleBar(getString(R.string.login))
mRxPermissions = RxPermissions(this)
getLocationPermission()
iwxapi = WXAPIFactory.createWXAPI(this, WXEntryActivity.WX_APP_ID, true)
......@@ -94,10 +100,10 @@ class LoginActivity : BaseActivity() {
}
fl_weChat_login.setOnClickListener {
/* if (!UIUtils.isWeixinAvilible(this)) {
ToastUtils.showShort(getString(R.string.please_instal_wechat))
return@setOnClickListener
}*/
/* if (!UIUtils.isWeixinAvilible(this)) {
ToastUtils.showShort(getString(R.string.please_instal_wechat))
return@setOnClickListener
}*/
setWeChatLogin()
}
......@@ -105,29 +111,32 @@ class LoginActivity : BaseActivity() {
}
private fun getLocationPermission() {
AndPermission.with(this)
.runtime()
.permission(Permission.ACCESS_COARSE_LOCATION, Permission.READ_PHONE_STATE)
.onDenied {
mRxPermissions?.let {
it.request(Permission.ACCESS_COARSE_LOCATION, Permission.READ_PHONE_STATE).subscribe({
if (it) {
//权限被允许
initLocation()
} else {
val builder = CommonDialog.Builder(this)
builder.setTitle(getString(R.string.prohibiting_access_will_affect_your_normal_use))
builder.setNegativeButton(getString(R.string.refuse),
resources.getColor(R.color.color14)) {
ContextCompat.getColor(this, R.color.color14)) {
ToastUtils.showShort(getString(R.string.failed_to_obtain_permission))
commonDialog.dismiss()
}
builder.setPositiveButton(getString(R.string.agree_to_open),
resources.getColor(R.color.colorPrimary)) {
ContextCompat.getColor(this, R.color.colorPrimary)) {
toSelfSetting()
commonDialog.dismiss()
}
commonDialog = builder.create()
commonDialog.show()
}.onGranted {
//权限被允许
initLocation()
}.start()
}
}, {
})
}
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment