【发布时间】:2019-01-22 19:04:30
【问题描述】:
我正在尝试将已下载的 .apk 安装到 Android 7 的下载文件夹中。
我已经尝试了许多 * 帖子中推荐的方法,这里是 https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en,使用 FileProvider:
File file = new File(fileUri);
//using Android.Support.V4.Content;
var downloadUri = FileProvider.GetUriForFile(context,context.ApplicationContext.PackageName + ".com.package.name.provider", file);
Intent install = new Intent(Intent.ActionInstallPackage);
install.AddFlags(ActivityFlags.GrantReadUriPermission);
install.AddFlags(ActivityFlags.GrantWriteUriPermission);
install.AddFlags(ActivityFlags.GrantPersistableUriPermission);
install.SetDataAndType(downloadUri, "application/vnd.android.package-archive");
context.StartActivity(install);
AndroidManifest.xml
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<application android:label="Settings" android:icon="@drawable/Icon" android:theme="@style/myTheme">
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.com.package.name.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
</application>
provider_paths.xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
“downloadUri”看起来像:“content://com.package.name.com.package.name.provider/external_files/Download/Sensors%2520Multitool_1.3.0_apk-dl.com.apk em>"
弹出安装窗口时的错误是:“解析包时出现问题”。
我已经通过在下载文件夹中单击它来安装这个包,它安装得很好,我也尝试了其他 .apk 有同样的问题。
【问题讨论】:
-
不是一个有保证的解决方案,但也许您正在下载适用于 Android O 的 apk 构建,因此导致解析异常。你有没有可能检查这个?
-
我已经检查了该 apk 是否已安装,只需在下载文件夹中单击它,它就可以正确安装和运行。
-
@IulianPopescu 您可能正在做某事,我已经尝试了另一个 .apk “es 文件资源管理器”,只是为了测试它是否可行并且确实可行,你知道为什么为不同的 android 版本构建的应用程序会不工作?
标签: android xamarin xamarin.android