zoukankan      html  css  js  c++  java
  • 安卓利用Intent分享信息 跟AlertDialog对话框一起用

    最基本分享方法:

     

    复制代码
    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();//显示对话框  

    复制代码
  • 相关阅读:
    [转化率预估-1]引言
    MATLAB 的输入输出命令
    MATLAB R2018a 输入中文却显示方框问号的问题
    支持向量机-SVM 学习
    MATLAB R2018a 安装教程
    【DeepLearning】用于几何匹配的卷积神经网络体系结构
    Alias Method for Sampling 采样方法
    关于机器学习的充分统计量
    java.lang.NullPointerException 空指针异常问题
    Eclipse导入项目时出错提示 project is missing required library
  • 原文地址:https://www.cnblogs.com/firecode/p/2704751.html
Copyright © 2011-2022 走看看