import RNFetchBlob from 'rn-fetch-blob';
RNFetchBlob.android
.actionViewIntent(
'/storage/emulated/0/Android/data/aaa.bbb.ccc/files/184.apk',
'application/vnd.android.package-archive',
)
.then(() => {
console.log('success');
})
.catch(err => {
console.log('error');
});
在模拟器中,上述代码正常运行,并弹出安装APK界面
在手机上(Android 8.1),屏幕闪白,然后什么也没有,也无法弹出安装界面,没有错误提示
您应该在 AndroidMainFest.xml 中添加权限:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
但是因为是动态权限,建议大家每次下载安装APK前检查是否有权限。
在这种情况下,你可以写一个原生模块,对于动态检查权限,你可以在进入权限设置页面后看到这个答案
您还可以使用react-native-permission库。
requestInstallUpdate = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.REQUEST_INSTALL_PACKAGES,
{
'title': 'Test App',
'message': 'Test App needs to install updates.'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can now install updates")
return true;
} else {
console.log("App install permission denied")
return false;
}
} catch (err) {
console.warn(err)
return false;
}
}
然后在您的下载方法中
let canInstall = await requestInstallUpdate()
if(canInstall){
//download apk
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句