我已经从服务器下载了apk文件,现在正在安装,但它给了我一个错误:通过Intent暴露在应用程序之外。getData()
我的代码是
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() +
"/download/" + "in.sample.myapp.apk")), "application/vnd.android.package-archive");
我已经搜索了错误,找到了一些但无法解决的问题。建议使用FileProvider。我这样做只是为了查看日志
Log.d("NewPath", "NewPathName is: " +(FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider",outputFile)));
可能会有帮助。
请提供帮助和建议。
使用FileProvider,以下是示例代码:
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider" ,file);
intent.setDataAndType(data, "/*");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent);
此外,您还需要在应用程序标记内的清单文件中包括FileProvider,请执行以下操作:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
还要在资源目录中创建一个xml文件夹,并创建一个文件provider\u路径。xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="PATH here" path=""/>
</paths>
您的代码
Intent intent = new Intent(Intent.ACTION_VIEW);
File file = new File(Environment.getExternalStorageDirectory() + "/FolderName/" + "yourFile.apk");
Uri data = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID +".provider",file);
intent.setDataAndType(data,"application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent);
文件路径。xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
显示
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths"/>
</provider>
</application>
在以Android API<24为目标的Delphi早期版本(10.3 Rio之前)中,可以创建文件意图,如使用Delphi使用外部图库打开图像的问题答案所示 但是,既然10.3的目标是Android API>=24,那么这段代码就会产生这个问题的主题。 我试图在Delphi使用android fileprovider向默认的android gallery发送打开和图像文件的意图来回答这个问题,但
我已经在android Studio2.3.1和Gradle3.2中设计了2到3个应用程序。当我将应用程序从它运行到任何设备或仿真器时,所有的程序都运行良好。但当我从build文件夹中获取apk并手动安装到设备或仿真器时。它每次都崩溃并给我错误classnotfound。这是主要活动。 我在用Mac,我试过很多种方法。即使我建立了新的项目,但仍然是同样的错误。下面是它的logcat。
问题陈述 我正在尝试创建VCardfile,它已经成功创建,但是,我想共享创建的文件
我试图用这个代码从手机的相机拍照: 主要活动。xml: 主要活动。爪哇: 我还将这些权限添加到清单中。xml: 但我得到了这个错误信息: android.os.文件://存储/仿真/0/图片/picFolder/1.jpg通过ClipData暴露在应用程序之外。我tem.getUri() 问题是什么?如何解决? 编辑:这是更新的代码: 主要活动: 显示: 建筑gradle(应用程序): 这是新的错
我在Windows 7X64计算机上使用Qt 5.12,Qt Creator 4.8上的设备低于此版本: 如图所示,SDK、NDK和JDK似乎都很好。 通过这条路径,我去创建一个名为“test_1”的简单QML项目: 代码如下: SDK包还如下: 这里有什么问题吗? 现在使用工具包测试程序: Desktop:OK Android X86或Arm7:Faild 下面是红色的编译输出窗口的所有内容: