是否有替代方案使用FileProvider来获取安装Android apk的uri?
所以我试图安装apk时遇到了uri暴露的问题。我写了一个自动更新android应用程序的库,然后用以下代码安装新的apk。是否有替代方案使用FileProvider来获取安装Android apk的uri?
Uri uri = VersionManagerUtil.getFileDestinationUri(apkDir, mParameters.getPackageName());
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
startActivityForResult(intent, RC_REQUEST_INSTALL);
然而,这并不对API 24+由于FileUriExposedException工作,所以我切换到FileProvider得到乌里
Uri uri = FileProvider.getUriForFile(getActivity(), BuildConfig.APPLICATION_ID + ".provider", file);
这个伟大的工程。不过,FileProvider需要以下依赖 compile 'com.android.support:support-v4:26.0.0-alpha1'
这是有问题的,因为我想使用这个库的所有项目都需要具有相同版本的支持库。那么有没有解决FileUriExposedException问题的非哈希方法?或者有没有不同的方式来安装一个可以避免这个问题的apk?
然而,FileProvider需要以下依赖编译“com.android.support:support-v4:26.0.0-alpha1”
首先,该版本是你的,而当前的(截至我发布这个答案时)是26.1.0
。
其次,FileProvider
的实际神器是support-core-utils
。要求support-v4
将通过传递依赖项拉动support-core-utils
。
这是问题,因为所有的项目,我想使用这个库就需要有支持库
或兼容的一个相同版本。 FileProvider
已经存在了几年。
那么是否有任何非hacky的方式来解决FileUriExposedException的问题?
您可以使用FileProvider
。或者,您可以编写自己的ContentProvider
提供该文件。
或者是否有不同的方法来安装一个apk,以避免这个问题一起?
不是我所知道的。