编辑: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);
}
知道为什么我不能分享贴纸吗?
答案 0 :(得分:2)
别担心...不是你。是Instagram。 :P
他们最近在Android上发布的Instagram打破了
com.instagram.share.ADD_TO_STORY
的意图。
密切关注此线程以进行更新。
https://developers.facebook.com/support/bugs/2434932356771915/