Android: can't share files

烂漫一生 提交于 2019-12-08 06:35:41

问题


I have a problems, when I'm trying to share files via Bluetooth, Dropbox, etc. Here's my code:

Intent intent = new Intent(Intent.ACTION_SEND);   
        File file = new File(opt.getPath());
        String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
        String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
        intent.setType(mimetype);
        String path = "file://" + file.getAbsolutePath();
        intent.putExtra(Intent.EXTRA_STREAM, path);   
        startActivity(Intent.createChooser(intent, "Choose File"));     

For example, when I select an image, getFileExtensionFromUrl returns empty string. And when mimetype is correct(application/pdf for example), I also can't share file(I've getting message "Unsupported file type"). What's wrong am I doing?

Update I partially solved this problem by myself. Here's the code:

Intent intent = new Intent(Intent.ACTION_SEND);   
        File file = new File(opt.getPath());
        String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(file.getAbsolutePath());
        String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
        intent.setType(mimetype);
        intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));   
        startActivity(Intent.createChooser(intent, "Choose File"));     

But getFileExtensionFromUrl function for example still returns empty string for video(tests on *.wmv)

Update. Solved that promlem by using this code:

int dotPos = file.getName().lastIndexOf(".")+1;

String ext = file.getName().substring(dotPos);

and removing

String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(file.getAbsolutePath());

来源:https://stackoverflow.com/questions/8080673/android-cant-share-files

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!