我正在实现意图过滤器以共享某种信息。但它遇到了问题。
btnShareLocInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Location Name:" + locName.getTitle());
shareIntent.putExtra(Intent.EXTRA_TEXT, locName.getTitle());
shareIntent.putExtra(Intent.EXTRA_TEXT, locName.getDescription());
shareIntent.putExtra(Intent.EXTRA_TEXT, getLocUri().toString());
shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(getResources().getString(R.string.image_url) + locName.getImage1()));
shareIntent.setType("image/*");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share via"));
}
});
此处显示主题和链接中的标题,但不显示文本正文中的标题,说明。 另外在链接点击我想检查手机中是否安装了应用程序,这也不行。
我已经找到了类似的问题,但任何解决方案都不适用于我。 任何帮助将不胜感激。
答案 0 :(得分:2)
Bundle使用ArrayMap内部存储信息。如果您使用相同的键多次使用putExtra方法,则替换该值。 ArrayMap的表单文档:
> /**
> * Add a new value to the array map.
> * @param key The key under which to store the value. If
> * this key already exists in the array, its value will be replaced.
> * @param value The value to store for the given key.
> * @return Returns the old value that was stored for the given key, or null if there
> * was no such key.
> */
因此,连接使用putExtra中的信息多次使用相同的密钥。 像这样:
String data = locName.getTitle() + locName.getDescription() + getLocUri().toString();
shareIntent.putExtra(Intent.EXTRA_TEXT,data);
而不是检查是否安装了应用程序,您可以使用此方法。
public boolean isAppInstalled(Context context, String packageName) {
try {
context.getPackageManager().getApplicationInfo(packageName, 0);
return true;
}
catch (PackageManager.NameNotFoundException e) {
return false;
}
}
并使用它:
isAppInstalled(myContext,"com.whatsapp"); // for checking whatsapp