我试图通过摆脱FileUriExposedException来支持Nougat.当我使用Uri.fromFile(gettheImageFilehere())方法我成功获取图像路径文件:///storage/emulated/0/DCIM/Camera/IMG_20170308_171951.jpg
当我使用
FileProvider.getUriForFile(HomeView.this, getApplicationContext().getPackageName() + ".provider",
gettheImageFilehere());
Run Code Online (Sandbox Code Playgroud)
我得到的图像路径为:/external_files/DCIM/Camera/IMG_20170308_171951.jpg
我试图使用android.os.FileUriExposedException上提供的实现. 这是我在androidmanifest.xml 里面的代码,我添加了提供程序:
<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>
Run Code Online (Sandbox Code Playgroud)
然后我在res/xml文件夹中创建了provider_paths.xml,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
Run Code Online (Sandbox Code Playgroud)
我对上述情况表示怀疑:
我得到的完整错误是无法解码流:java.io.FileNotFoundException:/ external_files/DCIM/Camera/IMG_20170308_175833.jpg(没有这样的文件或目录)
代码段的.java文件是在这里查看我的实现.
我正在尝试创建一个从特定服务器自动下载apk并将其安装在系统上的应用程序.我的安装代码如下所示,但不起作用.
File f = new File("/mnt/sdcard/download/", "Demo.apk");
Log.i("Demo", "f "+f.getAbsoluteFile());
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(f), "application/vnd.android.package_archive");
intent.addFlags(intent.FLAG_ACTIVITY_NEW_TASK);
m_context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我是否需要授予Manifest.xml安装权利?我知道之前已经问过这个问题,但到目前为止,没有一个答案对我有帮助.
如何重定向我的应用程序以在特定路径打开文件管理器?
我尝试过类似的东西:
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("*/*");
shareIntent.putExtra(Intent.EXTRA_STREAM,
Uri.fromFile(new File(filePath)));
shareIntent.setPackage("my.package");
startActivity(shareIntent);
Run Code Online (Sandbox Code Playgroud)
但我一直得到错误:
E/AndroidRuntime(3591):android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.SEND typ = / flg = 0x1 pkg = my.package(has clip)(有附加内容)}
什么是正确的意图过滤器,因为我怀疑ACTION_SEND不正确.
谢谢.
我正在开发一个自定义相机应用程序,它捕获图片并将其存储在图库中.当我使用Intent.ACTION_SEND共享该图像时,除了具有API 26的设备(即OREO)之外,它在所有设备上都能正常工作.
我分享图片的代码是:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/jpeg");
Uri uriShare = Uri.fromFile(outFile);
//outfile is the path of the image stored in the gallery
shareIntent.putExtra(Intent.EXTRA_STREAM, uriShare);
startActivity(Intent.createChooser(shareIntent, ""));
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
如何打开一个对话框,列出可以打开给定文件夹的所有应用程序?
我试过以下代码
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
startActivity(Intent.createChooser(intent, "Open Folder"));
Run Code Online (Sandbox Code Playgroud)
它说“没有应用程序可以执行此操作。”
我的设备有默认的文件资源管理器和 AndroidZip 应用程序(这些应用程序可以打开一个文件夹)。
我设置setImageBitmap与外部图像URL一起使用的ImageView 。我想保存图像,以便即使没有互联网连接也可以在以后使用。我在哪里以及如何保存?
我有一个已实现Cordova Camera插件的Cordova应用程序(在Android上运行),我有一个简单的“ click”事件,该事件调用以下代码,然后弹出消息:
“是否允许MyHQAPP访问设备上的照片,媒体和文件?”
我单击“允许”,应用程序立即关闭?我已经检查了ADB错误日志,可以在下面看到以下错误
谁能说出问题所在-请注意,我正在使用ngCordova插件来实现相机功能 http://ngcordova.com/docs/plugins/camera/
08-07 11:33:19.712 14954 15032 E PluginManager: Uncaught exception from plugin
08-07 11:33:19.712 14954 15032 E PluginManager: android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.mytechnologies.myapp_2017/cache/.Pic.jpg exposed beyond app through ClipData.Item.getUri()
08-07 11:33:19.712 14954 15032 E PluginManager: at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)
08-07 11:33:19.712 14954 15032 E PluginManager: at android.net.Uri.checkFileUriExposed(Uri.java:2346)
08-07 11:33:19.712 14954 15032 E PluginManager: at android.content.ClipData.prepareToLeaveProcess(ClipData.java:845)
08-07 11:33:19.712 14954 15032 E PluginManager: at android.content.Intent.prepareToLeaveProcess(Intent.java:8941)
08-07 11:33:19.712 14954 15032 E PluginManager: at android.content.Intent.prepareToLeaveProcess(Intent.java:8926)
08-07 11:33:19.712 14954 15032 E PluginManager: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1690)
08-07 11:33:19.712 …Run Code Online (Sandbox Code Playgroud) 在Google Play控制台中,我可以看到此异常仅发生在使用Android 8.0+的设备上.
android.os.FileUriExposedException:
at android.os.StrictMode.onFileUriExposed (StrictMode.java:1975)
at android.net.Uri.checkFileUriExposed (Uri.java:2355)
at android.content.Intent.prepareToLeaveProcess (Intent.java:9975)
at android.content.Intent.prepareToLeaveProcess (Intent.java:9950)
at android.content.Intent.prepareToLeaveProcess (Intent.java:9929)
at android.app.Instrumentation.execStartActivity (Instrumentation.java:1622)
at android.app.Activity.startActivityForResult (Activity.java:4748)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult (BaseFragmentActivityJB.java:10)
at android.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java)
at android.support.v4.app.ActivityCompatJB.finishAffinity (ActivityCompatJB.java)
or .startActivityForResult (ActivityCompatJB.java)
at android.support.v4.app.ActivityCompat.a (ActivityCompat.java:6)
at android.support.v4.app.FragmentActivity.a (FragmentActivity.java:8)
at android.support.v4.app.FragmentActivity$HostCallbacks.a (FragmentActivity.java:2)
at android.support.v4.app.Fragment.a (Fragment.java:38)
at android.support.v4.app.Fragment.a (Fragment.java:1)
at de.test.testapp.FileManagerFragment.onClick (FileManagerFragment.java:113)
at android.view.View.performClick (View.java:6291)
at android.view.View$PerformClick.run (View.java:24931)
at android.os.Handler.handleCallback (Handler.java:808)
at android.os.Handler.dispatchMessage (Handler.java:101)
at android.os.Looper.loop (Looper.java:166)
at android.app.ActivityThread.main (ActivityThread.java:7390)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:245)
at …Run Code Online (Sandbox Code Playgroud) Android nougat 7中不支持相机和图库裁剪在android nougat 7中打开相机我收到此错误消息.
android.os.FileUriExposedException:
file:///storage/emulated/0/file1495176310055.jpg通过ClipData.Item.getUri()暴露在app之外
我的订单文件夹中的外部存储中有图像,并且我正在尝试使用意图将该图像共享到外部应用程序
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Orders");
String filename = "OrderID.jpg";
File file = new File(file,filename);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));
try {
startActivity(intent);
} catch (android.content.ActivityNotFoundException ex) {
}
Run Code Online (Sandbox Code Playgroud)
我已授予加载应用程序本身的存储权限,但每次应用程序崩溃时我都会得到
ndroid.os.FileUriExposedException: file:///storage/emulated/0/Orders/OrderID.jpg exposed beyond app through ClipData.Item.getUri()
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?我在谷歌上关注了很多帖子但没有用
android.os.FileUriExposedException:file.jpg 通过 ClipData.Item.getUri() 暴露在应用程序之外
https://github.com/react-native-community/react-native-share/issues/185
android ×10
java ×3
apk ×1
camera ×1
cordova ×1
crop ×1
file-manager ×1
ngcordova ×1
share ×1
share-intent ×1