首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓应用安装新版本后关闭

安卓应用安装新版本后关闭
EN

Stack Overflow用户
提问于 2020-01-08 22:22:46
回答 2查看 110关注 0票数 0

我有一个现有的反应原生应用程序,我添加了一些功能,并想要更新它的语法。我的问题是在安装后,我的应用程序被无缘无故地关闭了,但应用程序更新得很安全。我怎样才能防止这种情况

我的build.gradle

代码语言:javascript
复制
ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
    }

我的react-native下载部分

代码语言:javascript
复制
downloadClick = async () => {
        const { Model } = this.props;
        try {
            await requestPermission(Permissions.WRITE_EXTERNAL_STORAGE, trans('STORAGE_MESSAGE'));
            await requestPermission(Permissions.WRITE_EXTERNAL_STORAGE, trans('REQUEST_INSTALL_PACKAGES'));
            this.downloading(true);
            const filePath = `${RNFS.DocumentDirectoryPath}/com.rasapayam.apk`;
            RNFS.downloadFile({
                // fromUrl: Model.ApkLink.value,
                fromUrl: "https://srv-file7.gofile.io/download/2Oyk8V/rasa-60.apk",
                toFile: filePath,
                progress: (res) => {
                    this.setState({ progress: (res.bytesWritten / res.contentLength) });
                },
                progressDivider: 1,
            }).promise.then((result) => {
                this.downloading(false);
                if (result.statusCode === 200) {
                    MimeIntent.openURLWithMime(filePath, 'application/vnd.android.package-archive');
                }
            }).catch((err) => {
                this.downloading(false);
            });
        } catch (err) {
            ToastAndroid.show(trans('VERSION_ERROR'), ToastAndroid.SHORT);
            this.setState({ progress: 0 });
        }
    } 

我的android原生模块,用于安装下载的apk

代码语言:javascript
复制
@ReactMethod
    public void openURLWithMime(String url, String mime, Promise promise) {
        if (url == null || url.isEmpty()) {
            promise.reject(new JSApplicationIllegalArgumentException("Invalid URL: " + url));
            return;
        }
        if (ContextCompat.checkSelfPermission(_context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
            Activity currentActivity = getCurrentActivity();
            Uri contentUri = FileProvider.getUriForFile(_context, "com.rasapayam", new File( url));
            Intent install = new Intent(Intent.ACTION_VIEW);
            install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            install.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            install.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
            install.setData(contentUri);
            if (currentActivity != null) {
                currentActivity.startActivity(install);
            } else {
                getReactApplicationContext().startActivity(install);
            }
            promise.resolve(true);
        }
    }

我的应用程序标记上的清单提供者

代码语言:javascript
复制
 <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.rasapayam"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_provider_paths" />
        </provider>

我的提供者xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path
        name="external"
        path="." />
    <external-files-path name="external_files" path="." />
    <root-path name="root" path="." />
    <files-path
        name="files"
        path="." />
</paths>
EN

回答 2

Stack Overflow用户

发布于 2020-01-08 23:55:48

我在这里不是专家,但我很有信心这是android上的自然行为,当你安装新的应用程序时,它需要关闭,Google Play也会在更新时关闭应用程序。您最想实现的是某种类型的OTA更新。您可以使用Code Push AFAIK实现这一点。

票数 1
EN

Stack Overflow用户

发布于 2020-01-09 00:26:51

这是一条正常的规则。请记住,当您使用Android Studio时。当你在手机或模拟器中运行一个应用程序,然后通过更新进一步运行它时,应用程序界面会关闭,然后安装新的apk。这是一个默认的过程。当你安装一个具有相同包名称的应用程序时,它会替换之前的版本。这需要停止当前进程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59647859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档