当用此方式分享内容时:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "我的分享内容");
sendIntent.setType("text/plain");
startActivity(sendIntent);
当我们的手机里面没有能够接收分享的应用程序时,你执行startActivity方法,你的程序就会出现Crash(崩溃),所以我们需要先判断下系统是否有这类型的应用程序,判断也很简单:
public boolean hasApplication(Intent intent){
PackageManager packageManager = getPackageManager();
//查询是否有该Intent的Activity
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
//activities里面不为空就有,否则就没有
return activities.size() > 0 ? true : false;
所以我们在startActivity的时候要做上面的判断,这样子我们开发出来的程序才会更加的健壮,少一些Crash用户体验也会更好,假如
你是否会觉得烦?所以我们也可以使用Intent的Intent.createChooser方法
它有如下优点:
- 1.1 即使用户选择了默认的方式,选择器仍然会弹出来
- 1.2 如果没有匹配到这样的应用程序,系统就会提示消息
- 1.3 你可以指定选择器Dialog的标题
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "我的分享内容");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, "弹出框的标题"));
注:某些邮件类应用程序,如Gmail,我们可以使用 putExtra(Intent.EXTRA_EMAIL, String[]) 添加一个字符串数组到Intent中
片段来自:
http://blog.youkuaiyun.com/xiaanming/article/details/9395991