zoukankan      html  css  js  c++  java
  • 安卓利用Intent分享信息

    最基本分享方法:

    Intent intent = new Intent(Intent.ACTION_SEND); // 启动分享发送的属性
    intent.setType("text/plain"); // 分享发送的数据类型
    intent.setPackage(packAgeName);
    intent.putExtra(Intent.EXTRA_SUBJECT, "xx分享"); // 分享的主题
    intent.putExtra(Intent.EXTRA_TEXT, "分享内容"); // 分享的内容
    mActivity.startActivity(Intent.createChooser(intent, "选择分享"));// 目标应用选择对话框的标题 

    如果需要对一些应用进行过滤显示的话,可以采用这种方法:

    这个方法是用来获取安卓系统上所有符合你需要分享的应用:

    public List<ResolveInfo> getShareTargets(){
            List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
            Intent intent=new Intent(Intent.ACTION_SEND,null);
            intent.addCategory(Intent.CATEGORY_DEFAULT);
            intent.setType("text/plain");
            PackageManager pm=mActivity.getPackageManager();
            mApps=pm.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
            return mApps;

        } 

     假如你想通过短信分享,但是你写了一个短信软件,想通过你的短信软件来发送信息,那么你就可以在获取到的列表中判断com.android.mms这个包名的应用,点击该选项的时候跳至你需要的页面。

     一个例子如下:

    List<ResolveInfo> appList=getShareTargets();
    items=new String[appList.size()];
    if(appList.size()>0){
      for (int i = 0; i < appList.size(); i++) {
    ResolveInfo tmp_ri=(ResolveInfo)appList.get(i);
            ActivityInfo tmp_ai=tmp_ri.activityInfo;
            ApplicationInfo apinfo=tmp_ai.applicationInfo;
            String tmp_appName=apinfo.loadLabel(mActivity.getPackageManager()).toString();
            appInfo.put(tmp_appName,tmp_ai.packageName);
            items[i]=tmp_appName;
      }
    }
    else{
           Toast.makeText(mActivity.getApplicationContext(),"暂无分享应用", Toast.LENGTH_SHORT).show();
    }
    new AlertDialog.Builder(mActivity).setTitle("选择分享") 
        .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int item) { 
         if(appInfo.size()>0){
             String packAgeName=appInfo.get(items[item].toString()).toString();
             if(packAgeName.equals("com.android.mms")){
             Intent gsms = new Intent(mActivity, sendSMSActivity.class);
             Bundle b = new Bundle();
             b.putString("content", "分享内容");
             gsms.putExtras(b);
             mActivity.startActivity(gsms);
             }
         else{
             Intent intent = new Intent(Intent.ACTION_SEND); // 启动分享发送的属性
             intent.setType("text/plain"); // 分享发送的数据类型
             intent.setPackage(packAgeName);
             intent.putExtra(Intent.EXTRA_SUBJECT, "xx分享"); // 分享的主题
             intent.putExtra(Intent.EXTRA_TEXT, "分享内容"); // 分享的内容
             mActivity.startActivity(Intent.createChooser(intent, "选择分享"));// 目标应用选择对话框的标题
            }
       }
    else{
         Toast.makeText(mActivity.getApplicationContext(),"暂无分享应用", Toast.LENGTH_SHORT).show();

     }
         dialog.cancel(); 
     } 

    }).show();//显示对话框  

  • 相关阅读:
    时间复杂度计算(二)
    程序时间复杂度计算(一)
    一个图像算法岗的面试总结
    文本小票的一种无监督聚类方法
    多个C3P0的java举例
    基于投影和众数特点的粘连sku分割
    GLSL 中的光照计算
    openGL 提升渲染性能 之 顶点数组 VBO IBO VAO
    C++ 中的返回值
    游戏中逻辑线程和逻辑线程的并行
  • 原文地址:https://www.cnblogs.com/yangzhong/p/2504163.html
Copyright © 2011-2022 走看看