Android开发之分享功能整理

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);
            }
        }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值