记一次安装包ANR事件

2019-01-19  本文已影响0人  山上的神仙

框架不是万能的,遇到问题还是得反射解决。

还是系统最管用。直接撸代码~~

1.在清单文件中添加权限

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

    1

2.判断当前是否为8.0以上系统(在这之前也可以对7.0系统进行判断,这里代码没有贴出)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

        boolean hasInstallPermission = isHasInstallPermissionWithO(context);

        if (!hasInstallPermission) {

            startInstallPermissionSettingActivity(context);

                    return;

        }

}

3.如果为8.0以上系统,则判断是否有未知应用安装权限

@RequiresApi (api = Build.VERSION_CODES.O)

private boolean isHasInstallPermissionWithO(Context context){

    if (context == null){

        return false;

    }

    return context.getPackageManager().canRequestPackageInstalls();

}

4.如果没有未知应用安装权限,则需要手动开启

/**

* 开启设置安装未知来源应用权限界面

* @param context

*/

@RequiresApi (api = Build.VERSION_CODES.O)

private void startInstallPermissionSettingActivity(Context context) {

    if (context == null){

        return;

    }

    Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);

    ((Activity)context).startActivityForResult(intent,REQUEST_CODE_APP_INSTALL);

}

5.Activity回调(这一步根据需求来确定),下面代码是kotlin写的

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

        super.onActivityResult(requestCode, resultCode, data)

        if (resultCode== Activity.RESULT_OK ){

            when(requestCode){

                REQUEST_CODE_APP_INSTALL -> {

                    onSettingCheckUpdate()

                }

            }

        }

    }

上一篇 下一篇

猜你喜欢

热点阅读