在 chrome 下载列表中打开 apk 没有打开 apk 安装程序

moh*_*sen 6 qt android qml android-install-apk qtquickcontrols2

我有一个 QtQuick2 应用程序。我用 Qt 5.15.1 的发布配置为 android 构建它(带签名),

当我用 chrome 下载 Apk 并在 chrome 上的下载列表中单击它时,它应该用安装程序打开,但它会用文件资源管理器打开 我的许多用户说它将用 UnZip Apps 打开。我没有这个问题使用 Qt 5.12,自从我安装 Qt 5.15 后就发现了这个问题。

当我在文件资源管理器(在 Android 上)上单击此文件时,没有问题,它将使用 Apk 安装程序打开。如何解决问题?

apk 链接在这里:

http://rokhshid.jooyabash.ir/files/rokhshid-3.apk

在此处输入图片说明

和另一个图像

在此处输入图片说明

我认为 Qt 5.13(及更高版本)或 Qt Creator 上存在错误。我现在使用 Qt 5.15.1 和 Qt Creator 4.13.2 进行测试

AndroidManifest.xml 文件:

<?xml version="1.0"?>
<manifest package="org.companyname.myapp" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.14" android:versionCode="3" android:installLocation="auto">
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
         Remove the comment if you do not require these default permissions. -->
    <!-- %%INSERT_PERMISSIONS -->

    <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
         Remove the comment if you do not require these default features. -->
    <!-- %%INSERT_FEATURES -->

    <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>

    <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="rokhshid" android:icon="@drawable/icon" android:extractNativeLibs="true">
        <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="?????" android:screenOrientation="unspecified" android:launchMode="singleTop" android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <!-- Application arguments -->
            <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
            <!-- Application arguments -->
            <meta-data android:name="android.app.lib_name" android:value="Rokhshid2"/>
            <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
            <meta-data android:name="android.app.repository" android:value="default"/>
            <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
            <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
            <!-- Deploy Qt libs as part of package -->
            <meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/>
            <!-- Run with local libs -->
            <meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/>
            <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
            <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/>
            <meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/>
            <meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/>
            <!-- Used to specify custom system library path to run with local system libs -->
            <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> -->
            <!--  Messages maps -->
            <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
            <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
            <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
            <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/>
            <!--  Messages maps -->
            <!-- Splash screen -->
            <!-- Splash screen -->
            <!-- Background running -->
            <!-- Warning: changing this value to true may cause unexpected crashes if the
                          application still try to draw after
                          "applicationStateChanged(Qt::ApplicationSuspended)"
                          signal is sent! -->
            <meta-data android:name="android.app.background_running" android:value="false"/>
            <!-- Background running -->
            <!-- auto screen scale factor -->
            <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/>
            <!-- auto screen scale factor -->
            <!-- extract android style -->
            <!-- available android:values :
                * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons
                * full - useful QWidget & Quick Controls 1 apps
                * minimal - useful for Quick Controls 2 apps, it is much faster than "full"
                * none - useful for apps that don't use any of the above Qt modules
                -->
            <meta-data android:name="android.app.extract_android_style" android:value="default"/>
            <!-- extract android style -->
            <meta-data android:name="android.app.splash_screen_sticky" android:value="true"/>
            <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash2"/>
        </activity>
        <!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices -->
    </application>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.DELETE_PACKAGES"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)

moh*_*sen 0

我在 StartUp 类的配置方法中添加了以下设置


        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            var provider = new FileExtensionContentTypeProvider();
            // Add new mappings`enter code here`
            provider.Mappings[".zip"] = "application/zip,application/octet-stream,application/x-zip-compressed,multipart/x-zip";
            provider.Mappings[".apk"] = "application/vnd.android.package-archive";
            //provider.Mappings[".apk"] = "application/zip,application/java-archive";
            app.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "Files")),
                RequestPath = "/Files",
                ContentTypeProvider = provider
            });
    }        
Run Code Online (Sandbox Code Playgroud)