您的位置:首页 > 其它

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

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

StoreFragment类中需要添加和修改的代码如下:

// 加载Apk
private 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);
}
}


@Override
public 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”作者的热心开源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: