使用android意图将带有图像的文本共享到instagram
Posted
技术标签:
【中文标题】使用android意图将带有图像的文本共享到instagram【英文标题】:Sharing text with image to instagram using android intent 【发布时间】:2015-09-17 22:11:26 【问题描述】:我知道这个问题已经被问过好几次了,我正在尝试为使用发送意图共享到 instagram 的图像添加标题
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.putExtra(Intent.EXTRA_STREAM,uri);
shareIntent.putExtra(Intent.EXTRA_TEXT,"YOUR TEXT TO SHARE IN INSTAGRAM");
shareIntent.setPackage("com.instagram.android");
return shareIntent;
有人成功过吗?
是不支持还是撤销了支持?
【问题讨论】:
ACTION_SEND
协议被记录为在任何给定的Intent
上支持 either EXTRA_TEXT
或 EXTRA_STREAM
。虽然有些应用可能同时支持两者,但并不要求任何应用都支持。
有人说 Instagram 确实支持额外的文本,但我无法使其正常工作,所以我特别询问 Instagram 应用
【参考方案1】:
There was an official statement from Instagram (mid-2015) 宣布 ios 和 Android 应用不再接受预填充字幕:
从今天开始,iOS Hooks 和 Android Intent 将停止接受第三方应用传递的字幕。这是一个非破坏性的变化:使用预填充字幕的现有移动应用程序将继续能够使用此流程通过 Instagram 应用程序共享媒体,但现在 Instagram 将忽略字幕文本。要为第三方应用共享的照片或视频创建标题,用户必须手动输入标题,就像他们在使用 Instagram 原生应用共享内容时所做的一样。
查看the Instagram documentation for Android,我们确实看到没有提及在意图中额外提供传统的Intent.EXTRA_TEXT
字符串,这是其他应用程序惯用的。他们的示例仅限于提供 Uri:
// Add the URI to the Intent.
share.putExtra(Intent.EXTRA_STREAM, uri);
// Broadcast the Intent.
startActivity(Intent.createChooser(share, "Share to"));
很抱歉,这根本不可能,我们由 Facebook 自行决定。
【讨论】:
【参考方案2】:直到Instagram无法解决,我将文本复制到剪贴板并指示用户粘贴
【讨论】:
这是一个不错的方法。我会考虑的。【参考方案3】: @Override
public void onSingleImageSelected(Uri uri, String tag)
fileProfileImage = uri.getPath();
compressProfileImage();
imgShareTosocial.setVisibility(View.VISIBLE);
Glide.with(getApplicationContext()).load(uri).into(imgShareTosocial);
@SuppressLint("CheckResult")
private void compressProfileImage()
File file = new File(fileProfileImage);
new Compressor(this)
.compressToFileAsFlowable(file)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<File>()
@Override
public void accept(File file) throws Exception
compressProfileImage = file;
String imagePath = compressProfileImage.getAbsolutePath();
tvSelectMedia.setText(imagePath);
, new Consumer<Throwable>()
@Override
public void accept(Throwable throwable) throws Exception
throwable.printStackTrace();
);
private void shareToInstagram()
path = tvSelectMedia.getText().toString().trim();
Intent intent = getPackageManager().getLaunchIntentForPackage("com.instagram.android");
if (intent != null)
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setPackage("com.instagram.android");
try
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), path, "Step Up", "Step Up")));
catch (FileNotFoundException e)
e.printStackTrace();
shareIntent.setType("image/jpeg");
startActivity(shareIntent);
else
// bring user to the market to download the app.
// or let them choose an app?
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id=" + "com.instagram.android"));
startActivity(intent);
【讨论】:
我有类似的解决方案,但它停止了工作。即使我安装了 instagram 应用程序,现在也找不到 Intent。【参考方案4】:我也有同样的问题。我认为目前是不可能的。
在https://instagram.com/developer/mobile-sharing/android-intents/ 中只讨论 Intent.EXTRA_STREAM,所以我想它是唯一可用的。
这是我的代码:
Intent instagramIntent = new Intent(Intent.ACTION_SEND);
instagramIntent.setType("image/*");
File media = new File(mediaPath);
Uri uri = Uri.fromFile(media);
instagramIntent.putExtra(Intent.EXTRA_STREAM, uri);
instagramIntent.setPackage("com.instagram.android");
PackageManager packManager = getPackageManager();
List<ResolveInfo> resolvedInfoList = packManager.queryIntentActivities(instagramIntent, PackageManager.MATCH_DEFAULT_ONLY);
boolean resolved = false;
for(ResolveInfo resolveInfo: resolvedInfoList)
if(resolveInfo.activityInfo.packageName.startsWith("com.instagram.android"))
instagramIntent.setClassName(
resolveInfo.activityInfo.packageName,
resolveInfo.activityInfo.name );
resolved = true;
break;
if(resolved)
startActivity(instagramIntent);
else
Toast.makeText(PromocionarMain.this, "Instagram App is not installed", Toast.LENGTH_LONG).show();
【讨论】:
请勿复制粘贴旧帖【参考方案5】:Instagram 已停止接受预先填充的字幕,以提高系统中内容的质量。请参阅此帖子。
http://developers.instagram.com/post/125972775561/removing-pre-filled-captions-from-mobile-sharing
【讨论】:
请不要对多个问题发布相同的答案。发布一个好的答案,然后投票/标记以关闭其他问题作为重复问题。如果问题不是重复的,调整您对该问题的回答。以上是关于使用android意图将带有图像的文本共享到instagram的主要内容,如果未能解决你的问题,请参考以下文章