• 安卓利用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();//显示对话框  

    复制代码
  • 相关阅读:
    字节码编程,Javassist篇四《通过字节码插桩监控方法采集运行时入参出参和异常信息》
    字节码编程,Javassist篇三《使用Javassist在运行时重新加载类「替换原方法输出不一样的结果」》
    字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》
    字节码编程,Javassist篇一《基于javassist的第一个案例helloworld》
    CPU瞒着内存竟干出这种事
    可怕!CPU竟成了黑客的帮凶!
    完了!CPU一味求快出事儿了!
    如果平行宇宙也有编程语言
    你离黑客的距离,就差这20个神器了
    哈希表哪家强?几大编程语言吵起来了!
  • 原文地址:https://www.cnblogs.com/firecode/p/2704751.html
Copyright © 2020-2023  润新知