Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从其他应用程序共享的uri中获取apk文件的实际路径_Android - Fatal编程技术网

Android 从其他应用程序共享的uri中获取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="

比如说,文件浏览器现在使用FileProvider打开apk文件,那么,使用如下意图:

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
获取的内容。目前,您的文件复制方法是唯一可靠的选择。