编辑:Facebook 问题:https://developers.facebook.com/support/bugs/2434932356771915/
<小时/>我正在尝试将位图分享到 Instagram 故事贴纸。 但它加载了 Instagram,但不显示任何贴纸,没有背景颜色,只有黑色的故事屏幕。 这段代码有什么问题?我检查文件是否位于外部数据缓存目录中,这很好。
根据Facebook's Instagram documentation :
我向 AndroidManifest.xml 添加了存储的读/写权限和提供程序
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <provider android:authorities="my.app.id.fileprovider" android:name="androidx.core.content.FileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
我添加了 file_paths.xml 以将外部缓存文件夹共享给其他应用
<?xml version="1.0" encoding="utf-8"?> <resources> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-cache-path name="share" path="."/> </paths> </resources>
我从可绘制对象创建位图,将其写入外部缓存目录上的文件,然后应用文档中的 Intent(如示例)
public static void sendStickerToInstagram() { Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.sticker); File extStorageDirectory = context.getExternalCacheDir(); File stickerFile = new File(extStorageDirectory, "sticker.png"); try { FileOutputStream outStream = new FileOutputStream(stickerFile); bm.compress(Bitmap.CompressFormat.PNG, 100, outStream); outStream.flush(); outStream.close(); } catch (IOException e) { Log.e("TEST", e.getMessage()); } Uri stickerUri = FileProvider.getUriForFile(activity, "my.app.id.fileprovider", stickerFile); // Uri stickerUri = Uri.fromFile(stickerFile); String linkUrl = "https://stackoverflow.com"; Intent intent = new Intent("com.instagram.share.ADD_TO_STORY"); intent.setType("image/*"); intent.putExtra("interactive_asset_uri", stickerUri); intent.putExtra("content_url", linkUrl); intent.putExtra("top_background_color", "#33FF33"); intent.putExtra("bottom_background_color", "#FF00FF"); grantUriPermission("com.instagram.android", stickerUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); if (getPackageManager().resolveActivity(intent, 0) != null) { startActivityForResult(intent, 0); } }
最奇怪的部分是,当我测试将我的贴纸共享为背景时,它起作用了,因此文件按预期加载,并具有所有权限。
Intent intent = new Intent("com.instagram.share.ADD_TO_STORY");
intent.setDataAndType(stickerUri, "image/*");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra("content_url", linkUrl);
if (activity.getPackageManager().resolveActivity(intent, 0) != null) {
activity.startActivityForResult(intent, 0);
}
知道为什么我无法分享贴纸吗?
最佳答案
别担心...不是你。这是Instagram。 :P
他们最近在 Android 上发布的 Instagram 打破了
com.instagram.share.ADD_TO_STORY
Intent 。
请密切关注此线程以获取更新。
https://developers.facebook.com/support/bugs/2434932356771915/
关于java - 分享 Instagram Story 的贴纸坏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59352497/