【问题标题】:Sharing Image to Instagram Story将图像分享到 Instagram 故事
【发布时间】:2019-04-06 09:05:44
【问题描述】:

使用分享 intent 我尝试使用以下代码将图片上传到 Instagram

  public static boolean shareBitmap(Context context, Bitmap bitmap, String textToShare, String packageNameOfApp,
                                  String intentMessage) {
    try {
        File file = new File(context.getCacheDir(), "Share.jpg");
        saveBitmapAtLocation(bitmap, Bitmap.CompressFormat.JPEG, 100, file);
        Uri contentUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file);
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_STREAM, contentUri);
        String textToAppend = null;
        textToAppend = context.getString(R.string.shortenUrl);
        if (textToShare != null && !textToShare.isEmpty())
            intent.putExtra(Intent.EXTRA_TEXT, textToShare + " " + textToAppend);
        else
            intent.putExtra(Intent.EXTRA_TEXT, textToAppend);
        intent.setType("image/*");
        List<ResolveInfo> resInfoList = context.getPackageManager().queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);
        for (ResolveInfo resolveInfo : resInfoList) {
            String packageName = resolveInfo.activityInfo.packageName;
            context.grantUriPermission(packageName, contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
        }
        if (packageNameOfApp != null) {
            if (appInstalledOrNot((Activity) context, packageNameOfApp))
                intent.setPackage(packageNameOfApp);
            else
                return false;
        }

        context.startActivity(Intent.createChooser(intent, intentMessage));
    } catch (Exception e) {
        e.printStackTrace();
    }
    return true;
}

当我尝试直接发布到 Instagram 故事时,它会出现黑屏并显示 Toast 消息无法刷新提要

【问题讨论】:

    标签: android image android-intent sharing


    【解决方案1】:

    将 Instagram-app-package 设置为 intent-package 即可完成您的工作。

    Uri uri = Uri.fromFile(new File(YOUR_FILE_PATH))
    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("image/*");
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
    shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
    shareIntent.setPackage("com.instagram.android"); //Instagram App package
    startActivity(Intent.createChooser(shareIntent, "Share.."));
    

    希望对你有所帮助。

    【讨论】:

    • @Vivek Faldu 请看一下。
    • 感谢您的帮助...我刚刚发现了问题..它与图像有关..我正在发送 png 文件广告数据标签是 jpeg。
    • 遇到了您的问题,如果您尝试上述代码,那么在您的选择器中,只有 Instagram 应用会显示其他应用不会显示。
    • 感谢 Shamsul,我需要分享可用的应用程序......除 Instagram 故事外,其他所有应用程序都运行良好。
    【解决方案2】:

    经过长时间的研究,我终于找到了答案。

       private void shareStory(){
    
        Uri backgroundAssetUri = FileProvider.getUriForFile(this, "your_package_name.provider", imgFile);
    
        Intent storiesIntent = new Intent("com.instagram.share.ADD_TO_STORY");
        storiesIntent.setDataAndType(backgroundAssetUri,  "image/*");
        storiesIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        storiesIntent.setPackage("com.instagram.android");
        this.grantUriPermission(
                "com.instagram.android", backgroundAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
        this.startActivity(storiesIntent);
    } 
    

    【讨论】:

    • 它对我不起作用,它打开相机而不是使用图像
    【解决方案3】:

    我遇到了同样的问题,我在自己的问题中找到了替代解决方案:

    Xamarin Forms can't share image to Instagram stories

    唯一的问题是我正在使用 xamarin 表单进行开发,而不是使用原生 android,但我希望我的回答对您有所帮助?

    【讨论】:

      猜你喜欢
      • 2019-11-08
      • 2021-11-19
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 2022-12-30
      相关资源
      最近更新 更多