以明确的意图分享到Google+(没有PlusShare / Play服务)

时间:2015-01-29 10:35:03

标签: android android-intent google-plus

是否有一种简单的方式来共享网址&已预填充的Google+文字,没有添加Google Play Services依赖项,只使用普通的Android意图?

我正在寻找与此solution for Twitterthis one for Facebook类似的内容。

我问因为:

  • 我不是很高兴为这个应用程序中的非常小的功能添加新的依赖项(即使只是play-services-plus)。
  • 在运行Android 5.0的Nexus 5测试设备上,每当我尝试分享内容(“Google Play服务已停止”)时,Play服务都会崩溃,即使我正在使用他们的PlusShare.Builder prefill示例代码。 (在运行Android 4.4.4的另一台设备上,它确实有效。)

1 个答案:

答案 0 :(得分:2)

嗯,仅仅使用Intent.ACTION_SEND,将整个共享文本(包括网址)放在Intent.EXTRA_TEXT中就很容易了:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, 
    "Just testing, check this out: https://stackoverflow.com/questions/28212490/");
filterByPackageName(context, intent, "com.google.android.apps.plus");
context.startActivity(intent);

...其中filterByPackageName()是这样的实用程序(which I've posted before):

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;
        }
    }
}

如果您是通过以前使用Google PlusShare.Builder API的活动执行此操作,则仍然可以像以前一样调用activity.startActivityForResult并处理onActivityResult

与使用PlusShare.Builder相比,使用此手动构建的Intent调用Plus应用程序的一个缺点是,用户必须选择他想与之共享的Google Plus帐户(如果他有多个帐户),无论如何您是否已使用Google将他登录到您的应用中。