zoukankan      html  css  js  c++  java
  • Android 使用预定义的action值启动系统应用

    1、启动浏览器

    1 Intent intent = new Intent();
    2         intent.setAction(Intent.ACTION_WEB_SEARCH);
    3         //可以传一个搜索关键字,会直接显示搜索结果页面。key是预定义的常量
    4         // intent.putExtra(SearchManager.QUERY,"要搜索的内容");
    5         startActivity(intent);
    Intent.ACTION_WEB_SEARCH 匹配的动作是网页/浏览器



    如果是这样的Intent:
    1     Intent intent = new Intent();
    2    
    3     intent.setAction(Intent.ACTION_WEB_SEARCH);   

    也可以写成这样:

    1
    2     Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);

    2、启动浏览器,转到指定页面

    1     //网址必须写全,不能省略协议http
    2     Uri uri =Uri.parse("http://www.baidu.com"); 
    3     //必须要传一个URI,才可以启动浏览器
    4     Intent intent = new Intent(Intent.ACTION_VIEW,uri);
    5     startActivity(intent);
    Intent.ACTION_VIEW匹配的动作很多,是一个大类,包含了各种功能,必须要传参数,系统根据这些具体的参数才能判断要启动的程序(类型)。

    3、启动拨号程序

    1  Intent intent = new Intent();
    2         intent.setAction(Intent.ACTION_DIAL);
    3         startActivity(intent);
    ACTION_DIAL 匹配拨号程序。可以自动填写要拨的号码:

    1     //手机号
    2     Uri uri =Uri.parse("tel:137.....");
    3     Intent intent = new Intent(Intent.ACTION_DIAL,uri);
    4     startActivity(intent);

    Uri参数可以写在Intent的构造函数里,也可以setData()单独写:

    1  Intent intent = new Intent(Intent.ACTION_DIAL);
    2         //传一个Uri类型的参数
    3         intent.setData(Uri.parse("tel:137....."));   //参数为Uri类型
    4         startActivity(intent);

    如果是putExtra,只能单独写:

    1     intent.putExtra(String key,String value);

    4、发短信

    方式一:

    1 Intent intent = new Intent(Intent.ACTION_VIEW);
    2         //可以设置短信的默认内容。可选
    3         intent.putExtra("sms_body", "短信内容");
    4         //具体细分VIEW的action为发短信
    5         intent.setType("vnd.android-dir/mms-sms");
    6         startActivity(intent);

    此方式不能设置默认收件人

    方式二:

    1  //默认收件人
    2         Uri uri =Uri.parse("smsto:137782323");
    3         Intent it = new Intent(Intent.ACTION_SENDTO, uri);
    4         it.putExtra("sms_body", "默认的短信内容");
    5         startActivity(it);

    5、发邮件

    1  //默认收件人
    2         Uri uri =Uri.parse("mailto:xxx@abc.com");
    3         Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
    4         startActivity(intent);

     注意:如果手机上没有对应的该类应用,又没有写对应的处理代码,会闪退。比如发送邮件,但没有安装邮箱,会闪退。

    应该先检查手机上是否已安装该类应用,如果没有,给出提示,或者打开浏览器,转到该类常用应用的下载页面。

    6、播放多媒体

    1 Intent intent = new Intent(Intent.ACTION_VIEW);
    2     Uri uri =Uri.parse("mnt/sdcard/1.mp3"); 
    3   //不能缺省这句代码
    4   intent.setDataAndType(uri,"audio/mp3");
    5   startActivity(intent);

    7、安装apk

    1   Intent intent = new Intent(Intent.ACTION_VIEW);
    2   //apk路径
    3  Uri uri=Uri.parse("mnt/sdcard/qqmail.apk");
    4  //参数:Uri类型的apk路径,String类型的数据类型(固定写法)
    5  intent.setDataAndType(uri,"application/vnd.android.package-archive");
    6  startActivity(intent);

    8、卸载apk

    更新软件时,有时需要先卸载原来的版本,再下载安装新版本。

    9、从相册选取图片

    1  Intent intent = new Intent();
    2         //所有图片格式
    3         intent.setType("image/*");
    4         intent.setAction(Intent.ACTION_GET_CONTENT);
    5         //要设置请求码
    6         startActivityForResult(intent, 1);

    10、选择某类应用

    1 Intent intent = new Intent(Intent.ACTION_SEND);
    2         intent.setType("text/plain");
    3         intent.putExtra(Intent.EXTRA_TITLE, "标题信息");
    4         intent.putExtra(Intent.EXTRA_SUBJECT, "主题信息");
    5         intent.putExtra(Intent.EXTRA_TEXT, "内容信息");
    6         startActivity(intent);

    会弹出对话框列出所有满足该action的的应用,点击某项会打开该应用。预定义的action值分类很乱,所以往往会列出很多项,其中一些我们并不想要。

    有时候我们并不想全部列出,只想列出其中部分,可以这样:

     1 Intent it = new Intent(Intent.ACTION_SEND);
     2         it.setType("text/plain");
     3         /*
     4         首先我们通过getPackageManager()获取包管理器PackageManager对象。PackageManger的主要职责是管理应用程序包。
     5         通过PackageManager,我们就可以获取应用程序信息,PackageManager获取的信息即来自AndroidManifest.XML。
     6         PageManager对象有个queryIntentActivities()方法,用来根据Intent查询可用的activity信息,该方法返回ResolveInfo集合。
     7          */
     8         List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(it, 0);
     9         if (!resInfo.isEmpty()){
    10             List<Intent> targetedShareIntents = new ArrayList<Intent>();
    11             /*
    12             针对每个ResolveInfo对象,通过activityInfo属性获取ActivityInfo对象,
    13             根据ActivityInfo的packageName获取所属的包名称,并判断名称是否包含email、bluetooth、mms、weibo,如果包含,则添加到备选集合中。
    14              */
    15             for (ResolveInfo info : resInfo) {
    16                 ActivityInfo activityInfo = info.activityInfo;
    17                 if (activityInfo.packageName.contains("email") || activityInfo.packageName.contains("bluetooth")
    18                         || activityInfo.packageName.contains("mms") || activityInfo.packageName.contains("weibo")) {
    19                     Intent targeted = new Intent(Intent.ACTION_SEND);
    20                     targeted.setType("text/plain");
    21                     targeted.putExtra(Intent.EXTRA_TITLE, "title");
    22                     targeted.putExtra(Intent.EXTRA_SUBJECT, "subject");
    23                     targeted.putExtra(Intent.EXTRA_TEXT, "content");
    24                     targeted.setPackage(activityInfo.packageName);
    25                     targetedShareIntents.add(targeted);
    26                 }
    27             }
    28             //然后调用ceateChooser创建一个ACTION_CHOOSER Intent,用第一个备选Intent作为target Intent(第一个参数)
    29             Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "选择分享到:");
    30             //通过putExtra设置Intent.EXTRA_INITIAL_INTENTS为其他备选Intent
    31             chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[] {}));
    32             startActivity(chooserIntent);
    33         }

    只会列出我们想要列出的项。通常用这种方式。

    下一篇随笔写 分享功能的实现。

    12、打开照相机

    1 Intent intent = new Intent("android.media.action.STILL_IMAGE_CAMERA"); 
    2         startActivity(intent);

    13、打开录音机

    1 Intent mi = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
    2         startActivity(mi);
  • 相关阅读:
    [YTU]_2417 C语言习题 字符串长度
    最小生成树学习笔记
    后缀数组学习笔记
    网络流的几个小优化
    面向对象
    Manacher(马拉车)学习笔记
    EXKMP学习笔记QAQ
    GDOI DAY1游记
    GDOI--DAY2 游记
    caioj:1348: [NOIP普及组2012]质因数分解 C++
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/10884465.html
Copyright © 2011-2022 走看看