Android 从其他应用程序共享的uri中获取apk文件的实际路径
比如说,文件浏览器现在使用FileProvider打开apk文件,那么,使用如下意图:Android 从其他应用程序共享的uri中获取apk文件的实际路径,android,Android,比如说,文件浏览器现在使用FileProvider打开apk文件,那么,使用如下意图: intent.setDataAndType(apkFileUri, "application/vnd.android.package-archive"); <action android:name="android.intent.action.VIEW" /> <data android:mimeType="
intent.setDataAndType(apkFileUri, "application/vnd.android.package-archive");
<action android:name="android.intent.action.VIEW" />
<data
android:mimeType="application/vnd.android.package-archive"
android:scheme="content" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
我在收到的活动中设置了如下意图过滤器:
<action android:name="android.intent.action.VIEW" />
<data
android:mimeType="application/vnd.android.package-archive"
android:scheme="content" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
我需要apk文件的绝对路径,以便我可以使用PackageManager中的方法获取apk文件的PackageInfo,以显示所需权限、版本代码和e.t.c等详细信息。因此,我确实需要apk文件的绝对路径。我四处搜索,我知道如果格式是图像或音频,我可以找到路径。但我需要apk路径
<action android:name="android.intent.action.VIEW" />
<data
android:mimeType="application/vnd.android.package-archive"
android:scheme="content" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
getPackageArchiveInfo(String archiveFilePath, int flag)
我有一个解决方法,可以使用InputStream通过这个uri读取文件,比如说,将文件复制到磁盘中。然后我就能知道复制的apk路径。但是如果apk文件很大,比如200MB甚至更大,那么这可能不是一个好主意。理想情况下,谷歌将为那些
PackageManager
api添加选项,这些api支持Uri
、InputStream
、FileDescriptor
,或者您可以从Uri
获取的内容。目前,您的文件复制方法是唯一可靠的选择。我确实有一种变通方法,可以使用InputStream通过这个uri读取文件,例如,将文件复制到磁盘中。然后我就能知道复制的apk路径。但是如果apk文件很大,比如200MB甚至更大,那么这可能不是一个好主意。理想情况下,谷歌将为那些PackageManager
api添加选项,这些api支持Uri
、InputStream
、FileDescriptor
,或者您可以从Uri
获取的内容。目前,您的文件复制方法是唯一可靠的选择。