分享Instagram故事的贴纸坏了吗?

问题描述 投票:0回答:1

[我正在尝试与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);
    }

知道为什么我不能分享贴纸吗?

java android android-intent instagram
1个回答
0
投票

[别担心...不是你。是Instagram。 :P

[他们最近在Android上发布的Instagram打破了com.instagram.share.ADD_TO_STORY意图。密切关注此线程以进行更新。

https://developers.facebook.com/support/bugs/2434932356771915/

© www.soinside.com 2019 - 2024. All rights reserved.