1、在自己的APP内部分享文本、图片等到外部可供分享的应用中
主要代码:
MainActivity.java,此界面只有一个按钮
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.share).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
/**
* 方式一,展示出系统中所有可供文字分享的APP
* 使用Intent.createChooser的方式展示界面
*/
// Intent send = new Intent(Intent.ACTION_SEND); //隐式intent的action
// send.setType("text/plain");
// send.putExtra(Intent.EXTRA_TEXT, "测试,这里发送推广地址");
// startActivity(Intent.createChooser(send, "share title")); //通过Intent.createChooser的方式展示可供分享的app
/**
* 方式二,展示出系统中所有可供文字分享的APP
* 使用自定义方式展示界面
*/
// initSharePopupWindow(view);
/**
* 方式三,展示出系统中所有可供文字分享的 指定APP
* 使用自定义方式展示界面
*/
Intent send = new Intent(Intent.ACTION_SEND); //隐式intent的action
send.setType("text/plain");
send.putExtra(Intent.EXTRA_TEXT, "测试,这里发送推广地址");
PackageManager pManager = getApplicationContext().getPackageManager();
List<ResolveInfo> resolveInfos = pManager.queryIntentActivities(send, 0);
if(resolveInfos.isEmpty()) return;
List<Intent> targetIntents = new ArrayList<>();
for(ResolveInfo ri:resolveInfos){
ActivityInfo activityInfo = ri.activityInfo;
String packageName = activityInfo.packageName;
String appName = activityInfo.loadLabel(pManager).toString();
switch (packageName){
case "com.tencent.mm":
case "com.tencent.mobileqq":
Log.e("zxy","the appName is:::" + appName);
addShareIntent(targetIntents, activityInfo);
break;
}
}
if(targetIntents == null || targetIntents.size() == 0){
return;
}
Intent chooserIntent = Intent.createChooser(targetIntents.remove(0), "分享至:");
if(chooserIntent == null) return;
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetIntents.toArray(new Parcelable[]{
}));
startActivity(chooserIntent);
}
}