Я пытаюсь загрузить файл Android .apk в папку загрузок во внутренней файловой системе Android.Я пробовал много вещей, таких как react-native-fs
, react-native-install-apk
, экспо FileSystem
, и в настоящее время я пытаюсь заставить react-native-simple-download-manager
работать.Вот ссылка для справки https://www.npmjs.com/package/react-native-simple-download-manager.
Файловая система Expo не выдавала никаких ошибок, но я не смог получить доступ к APK для ее установки, потому что не смог найти .apk в файловой системе.
Я не очень понимаю, почему, но все эти пакеты используют синтаксис вместо импорта.Я попытался использовать require и импортировать пакет, как обычно import ReactNativeDownloadManager from 'react-native-simple-download-manager';
, и я продолжаю получать сообщение об ошибке, что он не может найти функцию загрузки внутри undefined.Очевидно, что он неправильно импортируется, потому что я заглянул внутрь ReactNativeDownloadManager
по следующей ссылке https://github.com/master-atul/react-native-simple-download-manager/blob/master/index.js. Я также получу следующий совет, если наведу курсор на сам импорт.
Не могунайдите файл объявления для модуля «Reaction-native-simple-download-manager».'d: /React/SpringApp/node_modules/react-native-simple-download-manager/index.js' неявно имеет тип 'any'.
Could not find a declaration file for module 'react-native-simple-download-manager'. 'd:/React/SpringApp/node_modules/react-native-simple-download-manager/index.js' implicitly has an 'any' type.
Try `npm install @types/react-native-simple-download-manager` if it exists or add a new declaration (.d.ts) file containing `declare module 'react-native-simple-download-manager';`
Я попытался запустить это в командной строкеи я получаю эту ошибку.
npm ERR! code E404
npm ERR! 404 Not Found: @types/react-native-simple-download-manager@latest
Если кто-то может направить меня в правильном направлении для решения этой проблемы или указать мне лучший способ скачать APK, пожалуйста, сделайте!Спасибо.
import React, {Component} from 'react';
import {
StyleSheet,
Text,
Image,
View,
TouchableOpacity,
AsyncStorage,
Linking,
Platform,
} from 'react-native';
import Expo from 'expo';
import StarRating from 'react-native-star-rating';
import {
Icon
} from 'react-native-elements';
import ReactNativeDownloadManager from 'react-native-simple-download-manager';
export default class ViewApp extends Component {
constructor(props) {
super(props);
this.state = {
starCount: this.props.navigation.state.params.app.rating,
appInfo: [{
APP_DETAIL_DESC: ""
}],
sid: '',
header: this.props.navigation.state.params.app.title,
};
}
_installAndroid(url) {
headers = {
'Authorization': 'Bearer'
};
config = {
downloadTitle: this.props.navigation.state.params.app.title,
downloadDescription: 'spring app download',
saveAsName: 'springAppID'+ this.props.navigation.state.params.app.id,
allowedInRoaming: true,
allowedInMetered: true,
showInDownloads: true,
external: false, //when false basically means use the default Download path (version ^1.3)
path: "Download/" //if "external" is true then use this path (version ^1.3)
};
ReactNativeDownloadManager.download(url = url, headers = headers, config = config).then((response) => {
console.log('Download success!');
alert("success");
}).catch(err => {
console.log('Download failed!');
console.log(err)
alert("fails");
})
}
installApp = () => fetch(`OMITTED`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
appid: this.props.navigation.state.params.app.id,
staffno: this.state.sid,
})
})
.then((response) => response.json())
.then((responseJson) => {
if (Platform.OS === 'ios') {
Linking.openURL(JSON.parse(responseJson.GetDownladURLResult));
}
else {
this._installAndroid(JSON.parse(responseJson.GetDownladURLResult));
}
})
.catch((error) => {
console.error(error);
});
PS: да, я знаю, что там написано, а не скачать.это уже существующий сервис, который находится вне моего контроля.