Pinterest的Android共享意图不起作用

时间:2014-12-09 20:18:57

标签: android android-intent pinterest

我正在为Pinterest做一个android分享意图,但还没有完全正常工作。我能够附加图像,但我无法将文本发送到共享窗口中的“描述”字段。我尝试了不同的类型(text / plain,image / *,image / png),并尝试了ACTION_SEND_MULTIPLE意图类型,但仍然没有运气。 Google Chrome共享意图非常有效,因此我确信Pinterest支持此功能。这是我的代码:

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("*/*");
    intent.putExtra(Intent.EXTRA_TEXT, text);
    if(file != null) intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    intent.setClassName(packageName, name);

    this.startActivity(intent);

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:15)

Pinterest SDK的帮助下,我找到了一种与普通Android意图(不使用Pin It button developer docs)分享到Pinterest的方法。

基本上你只需用Intent.ACTION_VIEW打开这样的网址;官方的Pinterest应用程序友好地支持这些URL。 (我之前对sharing to Twitter采用了非常类似的方法。)

https://www.pinterest.com/pin/create/button/
   ?url=http%3A%2F%2Fwww.flickr.com%2Fphotos%2Fkentbrew%2F6851755809%2F             
   &media=http%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg
   &description=Next%20stop%3A%20Pinterest

为了获得更流畅的用户体验,set意图直接在Pinterest应用中打开(如果已安装)。

一个完整的例子:

String shareUrl = "https://stackoverflow.com/questions/27388056/";
String mediaUrl = "http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png";
String description = "Pinterest sharing using Android intents"
String url = String.format(
    "https://www.pinterest.com/pin/create/button/?url=%s&media=%s&description=%s", 
     urlEncode(shareUrl), urlEncode(mediaUrl), urlEncode(description));
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
filterByPackageName(context, intent, "com.pinterest");
context.startActivity(intent);

上面使用的Util方法:

public static void filterByPackageName(Context context, Intent intent, String prefix) {
    List<ResolveInfo> matches = context.getPackageManager().queryIntentActivities(intent, 0);
    for (ResolveInfo info : matches) {
        if (info.activityInfo.packageName.toLowerCase().startsWith(prefix)) {
            intent.setPackage(info.activityInfo.packageName);
            return;
        }
    }
}

public static String urlEncode(String s) {
    try {
        return URLEncoder.encode(s, "UTF-8");
    }
    catch (UnsupportedEncodingException e) {
        Log.wtf("", "UTF-8 should always be supported", e);
        return "";
    }
}

这是安装了Pinterest应用程序的Nexus 5的结果:

如果Pinterest应用程序未安装 ,那么共享也可以通过浏览器正常运行:

答案 1 :(得分:1)

由于某种原因,pinterest应用程序不符合标准(Intent.EXTRA_TEXT)所以我们必须单独添加它

if(appInfo.activityInfo.packageName.contains("com.pinterest"){
        shareIntent.putExtra("com.pinterest.EXTRA_DESCRIPTION","your description");
}

答案 2 :(得分:1)

File imageFileToShare = new File(orgimagefilePath);

Uri uri = Uri.fromFile(imageFileToShare);

Intent sharePintrestIntent = new Intent(Intent.ACTION_SEND);
sharePintrestIntent.setPackage("com.pinterest");
sharePintrestIntent.putExtra("com.pinterest.EXTRA_DESCRIPTION", text);
sharePintrestIntent.putExtra(Intent.EXTRA_STREAM, uri);
sharePintrestIntent.setType("image/*");
startActivityForResult(sharePintrestIntent, PINTEREST);