Skip to content

运行时权限工具,系统app相关获取工具,通知权限检查工具,中文和阿拉伯数字转换工具,集合转换工具,字符编码工具,文件处理,图片处理,水印工具,数学精确计算,IO处理,缓存工具,屏幕计算,颜色工具, 简易EventBus工具,手机系统相关信息,SD卡工具,序列化,软盘工具,颜色值计算,时间日期计算工具,花式Toast,汉字拼音转换,高斯模糊工具,网络检查工具,测量工具以及第三方系统方面意图工具等)

Notifications You must be signed in to change notification settings

zhengzaihong/Utils

Repository files navigation

本库工具集合:

a

依赖地址(已迁移jitpack):

implementation 'com.github.zhengzaihong:Utils:1.0.1'

例:应用请求权限处理,这里用kotlin演示,java同学放心使用

//请求权限
private fun requestPermission() {

    PermissionUtils.getInstance().requestPermission(this, arrayOf(
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.CALL_PHONE,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.ACCESS_FINE_LOCATION),
            "主人,我需要权限哦!",
            object : PermissionUtils.CallBackListener() {

                override fun onResult(granted: Boolean) {
                    
                    if(granted){
                        //TODO  获得了相关权限处理逻辑
                    }
                }
                override fun notAskPermission(permission: List<String>, goSetting: Boolean) {

                    if(goSetting){
                        PermissionUtils.getInstance().toAppSetting(this@MainActivity)
                    }
                }

            })
}

requestPermission方法参数介绍:

参数1:activity

参数2:一个或多个权限数组

参数3:需要权限的原因(该提示在用户非永久拒绝后再次打开应用会提示用户)

参数4:是否授权的相关回调信息

实际情况中,在一些操作必须要用户允许权限后才能操作,然而用户却拒绝了操作,此时需要跳转到设置去打开,可以如下操作:

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)

    PermissionUtils.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults, true)
}

复写onRequestPermissionsResult 方法,调用PermissionUtils中的onRequestPermissionsResult方法,最后一个参数传入true 则会在CallBackListener的notAskPermission方法中进行返回是否需要跳转。不跳转可以不传或者false。当然该工具类不止这些。

#更多工具请查看源码。

android 小贴士:

在开发中许多时候用户打开输入法,更多的是希望不需要每次都去点击输入法的关闭按钮才关闭,输入法千奇百怪,有点并不好操作,而是希望在打开输入法的时候点击以外区域自动关闭,那怎么操作呢?很简单,在你的基类activity中加入如下代码即可解决。

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
      
        View v = getCurrentFocus();
        if (isShouldHideInput(v, ev)) {
            if(hideInputMethod(this, v)) {
                return true; //隐藏键盘时,其他控件不响应点击事件==》注释则不拦截点击事件
            }
        }
    }
    return super.dispatchTouchEvent(ev);
}


/**
 * 点击屏幕非输入框区域关闭软键盘
 * @param context
 * @param v
 * @return
 */
public static Boolean hideInputMethod(Context context, View v) {
    InputMethodManager imm = (InputMethodManager) context
            .getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm != null) {
        return imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }
    return false;
}


public static boolean isShouldHideInput(View v, MotionEvent event) {
    if (v != null && (v instanceof EditText)) {
        int[] leftTop = { 0, 0 };
        v.getLocationInWindow(leftTop);
        int left = leftTop[0], top = leftTop[1], bottom = top + v.getHeight(), right = left
                + v.getWidth();
        if (event.getX() > left && event.getX() < right
                && event.getY() > top && event.getY() < bottom) {
            // 保留点击EditText的事件
            return false;
        } else {
            return true;
        }
    }
    return false;
}

About

运行时权限工具,系统app相关获取工具,通知权限检查工具,中文和阿拉伯数字转换工具,集合转换工具,字符编码工具,文件处理,图片处理,水印工具,数学精确计算,IO处理,缓存工具,屏幕计算,颜色工具, 简易EventBus工具,手机系统相关信息,SD卡工具,序列化,软盘工具,颜色值计算,时间日期计算工具,花式Toast,汉字拼音转换,高斯模糊工具,网络检查工具,测量工具以及第三方系统方面意图工具等)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published