Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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
Java Android:无法正确创建共享kml(xml)文件的意图_Java_Android_Android Intent - Fatal编程技术网

Java Android:无法正确创建共享kml(xml)文件的意图

Java Android:无法正确创建共享kml(xml)文件的意图,java,android,android-intent,Java,Android,Android Intent,我的应用程序生成kml(xml)文件,我希望用户能够通过电子邮件、蓝牙或其他方式共享这些文件。我已经看了几十个例子,但显然我仍然在做一些错误的事情。如果我选择Gmail,电子邮件会正确加载,但文件不会附加。如果选择bluetooth,bluetooth manager将崩溃。我做错了什么 private void createShareIntent(String filename) { Log.d(Common.APP_TAG, "** Create share intent **");

我的应用程序生成kml(xml)文件,我希望用户能够通过电子邮件、蓝牙或其他方式共享这些文件。我已经看了几十个例子,但显然我仍然在做一些错误的事情。如果我选择Gmail,电子邮件会正确加载,但文件不会附加。如果选择bluetooth,bluetooth manager将崩溃。我做错了什么

private void createShareIntent(String filename) {
    Log.d(Common.APP_TAG, "** Create share intent **");
  String mime = "text/plain";
    File exportFile = new File(filename);
    Log.d(Common.APP_TAG, Uri.fromFile(exportFile).toString());
    // logcat says : file:///mnt/sdcard/Android/data/com.gmail.qkzoo1978.qwhereami/files/exports/qExport_11-6-2012_1648.kml
    Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"testing@gmail.com"});
    intent.putExtra(Intent.EXTRA_SUBJECT, "Test");
    intent.putExtra(Intent.EXTRA_TEXT, "Text");
    intent.setType(mime);
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(exportFile));
    //intent.setDataAndType(Uri.fromFile(exportFile),  mime);
    startActivity(Intent.createChooser(intent, "Share Kml"));
}  

不确定你是否解决了这个问题,但我在这个周末遇到了同样的问题,并意识到这是因为我保存了一个我的应用程序可以访问但其他应用程序不能访问的文件。因此,当用于处理共享的应用程序尝试读取文件时,权限被拒绝。奇怪的是,这在日志中并不清楚

解决此问题的方法是将文件保存到外部存储,这可能并不理想


或者作为更好的解决方案,使用文件提供程序并在意图中授予权限

您是否尝试过选择数据文件夹之外的文件?Android可能不允许你从那里阅读[This thread][1]有很多有用的信息。[1] :我没有尝试过在其他地方使用相同的文件,但它让我在这里读/写,此应用程序创建了此文件。上面的目录是SD卡上我的应用程序目录。我也检查了你链接的线程,实际上我之前读过相同的。不同的是,在我的情况下,文件根本没有被附加。irc android dev(maha)上的一位个人指出,我忘记了Intent.ACTION\u SEND:Intent Intent=new Intent(Intent.ACTION\u SEND);