【发布时间】:2017-10-11 19:22:16
【问题描述】:
所以我在尝试安装 apk 时遇到了 uri 暴露问题。我编写了一个库,可以自动更新 android 应用程序,然后使用以下代码安装新的 apk。
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);
但是,由于 FileUriExposedException,这不适用于 api 24+,所以我切换到 FileProvider 来获取 Uri
Uri uri = FileProvider.getUriForFile(getActivity(), BuildConfig.APPLICATION_ID + ".provider", file);
这很好用...但是,FileProvider 需要以下依赖项
compile 'com.android.support:support-v4:26.0.0-alpha1' 这是有问题的,因为我想使用此库的所有项目都需要具有相同版本的支持库。那么是否有任何非 hacky 方法来解决 FileUriExposedException 的问题?或者有没有其他方法来安装一个可以完全避免这个问题的 apk?
【问题讨论】:
标签: android uri compatibility android-fileprovider