gpt4 book ai didi

android - 将私有(private)存储的图像分享到外部应用程序 - Android

转载 作者:行者123 更新时间:2023-11-29 01:41:20 24 4
gpt4 key购买 nike

我正在尝试将图像保存到我的应用程序的私有(private)文件系统,然后与外部应用程序共享该图像。我已经调查过了,看起来最好的方法就是保存到 filesDir 中,因为如果你使用 externalFiles 目录,有些设备可能不会有一个。到目前为止,这是我的代码(为简洁起见进行了简化):

Activity 与我的形象

public Uri saveImageAndGetUri(Context context) {
String fileName = "test.png";
File imageDirectory = new File(getFilesDir(), "images");
File savedImage = new File(imageDirectory, fileName);
FileOutputStream stream;
try {
stream = new FileOutputStream(savedImage);
getCurrentImage().compress(Bitmap.CompressFormat.PNG, 100, stream);
stream.flush();
stream.close();
} catch(Exception e) {}
return FileProvider.getUriForFile(context, "com.mydomain.mypackage.Dialogs.ShareOptions", savedImage);
}

ShareOptions.java

Uri contentUri = activity.saveImageAndGetUri(getContext()); //This calls the method above
intent = new Intent(Intent.ACTION_SEND);
getContext().grantUriPermission("com.twitter.android", contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); //Grant read permission to Twitter. Don't think this part is working
getContext().grantUriPermission("com.twitter.android", contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION); //Grant write permission to Twitter. Don't think this part is working
intent.setPackage("com.twitter.android");
intent.setType("image/png");
intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(Intent.EXTRA_STREAM, contentUri);

AndroidManifest.xml

<provider android:name="android.support.v4.content.FileProvider"
android:authorities="com.mydomain.mypackage.Dialogs.ShareOptions"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>

xml/文件路径.xml

<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="my_images" path="images/"/>
</paths>

发送 Intent 后,Twitter 应用程序立即崩溃。我查看了 Twitter 中的错误日志,似乎这可能是权限问题。我认为即使使用我目前拥有的代码,Twitter 也无权访问 Uri。

感谢任何帮助!

最佳答案

它不起作用的原因是许多第 3 方应用程序目前不支持 FileProvider。看到这个问题:Image share intent works for Gmail but crashes FB and twitter .

关于android - 将私有(private)存储的图像分享到外部应用程序 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24469064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com