Pinterest的Android共享意图不起作用
作者:互联网
我正在为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);
任何想法?谢谢!
解决方法:
在Pin It button developer docs的帮助下,我找到了一种与普通Android意图(不使用Pinterest SDK)分享到Pinterest的方法.
基本上你只需用Intent.ACTION_VIEW打开这样的URL;官方的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 app中打开,如果安装的话.
一个完整的例子:
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应用程序,共享也可以通过浏览器正常工作:
标签:pinterest,android,android-intent 来源: https://codeday.me/bug/20190927/1824708.html