运行"使用DroidPlugin实践应用的插件化"里面demo碰到的问题(附个人解决方案)

来源:互联网 发布:闪电网络 编辑:程序博客网 时间:2024/06/04 18:33

使用DroidPlugin实践应用的插件化这篇文章中作者写的很详细,但是,我在nexus 5,版本6.0.1上使用时,出现了文件路径下文件读取不出来的问题(我的路径下已经有好几个后缀名为.apk的文件了),后来查了不少资料,也对比了github上面360的插件 Qihoo360/DroidPlugin,里面有一段权限判断和请求权限的代码,先附上解决方案,其实完全是Qihoo360/DroidPlugin里面的代码,可能是“使用DroidPlugin实践应用的插件化”的作者忘记判断的缘故,所有造成了上面我所碰到的问题。
StoreFragment类中需要添加和修改的代码如下:

// 加载Apkprivate void loadApks() {    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {        startLoadInner();    } else {        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0x1);    }}
@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {    super.onRequestPermissionsResult(requestCode, permissions, grantResults);    if (requestCode == 0x1) {        if (permissions != null && permissions.length > 0) {            for (int i = 0; i < permissions.length; i++) {                String permisson = permissions[i];                int grantResult = grantResults[i];                if (Manifest.permission.READ_EXTERNAL_STORAGE.equals(permisson)) {                    if (grantResult == PackageManager.PERMISSION_GRANTED) {                        startLoadInner();                    } else {                        Toast.makeText(getActivity(), "没有授权,无法使用", Toast.LENGTH_SHORT).show();                    }                }            }            for (String permisson : permissions) {            }        }    }}private void startLoadInner() {    // 异步加载, 防止Apk过多, 影响速度    Observable.just(getApkFromDownload())            .subscribeOn(Schedulers.newThread())            .observeOn(AndroidSchedulers.mainThread())            .subscribe(mStoreAdapter::setApkItems);}

最后,感谢“使用DroidPlugin实践应用的插件化”和“DroidPlugin”作者的热心开源

1 0