Android笔记九.Intent异常处理及常用系统调用

Intent异常处理及常用系统调用

Jiangdg_VIP

http://blog.csdn.net/u012637501

一、Intent异常处理

当Intent对象启动组件或应用时,会由于组件的设置错误或者应用没有安装会导致异常。一般来说,应用出现异常后会异常退出。因为,为了不影响我们开发的应用程序正常使用,可以通过try....catch方法来处捕获异常或者捕获一个指定的异常,在异常处理模块作相应的处理(比如Toast提示)。如下所示:

try {

Intent intent=new Intent();

intent.setClassName("com.tencent.mm","com.tencent.mm.app.MMApplication");

startActivity(intent);

}

catch (Exception e) {

Log.i("异常标签",e);//不要用e.printStackTrace();Android一般都不提倡使用

}

比如,当Intent对象找不到指定的Activity时会出现ActivityNotFoundException异常,我们可以这样处理:

try {

Intent intent=new Intent();

intent.setClassName("com.tencent.mm","com.tencent.mm.app.MMApplication");

startActivity(intent);

}

catch (ActivityNotFoundException e) {

Toast.makeText( PocketSphinxDemo.this, "正在启动微信客户端,请稍后...", Toast.LENGTH_SHORT).show();

}

二、常用系统调用

由于项目的需要,自己收集和总结了一些使用intent启动系统程序源代码,4.0系统亲测都可以使用,分享一下共同学习吧。

(1)拨打电话
     Toast.makeText( PocketSphinxDemo.this, "正在启动拨号器,请稍后...", Toast.LENGTH_SHORT).show();
     Intent intent1=new Intent();	 //创建一个intent
     intent1.setAction(Intent.ACTION_DIAL);	//设置intent的Action属性
     intent1.setData(Uri.parse("tel://"));	//设置intent的Date属性
     startActivity(intent1);	//启动Activity	//启动Activity
(2)打开浏览器
     try{
      Toast.makeText( PocketSphinxDemo.this, "正在启动浏览器,请稍后...", Toast.LENGTH_SHORT).show();
      Uri uri=Uri.parse("http://www.baidu.com");	 //将字符串转换为uri对象
      Intent intent2=new Intent(Intent.ACTION_VIEW,uri);	//创建一个同时指定Action属性和Data属性的intent
      intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent2);	 //启动Activity
     }catch(ActivityNotFoundException e)
     {
              Toast.makeText(PocketSphinxDemo.this, " 启动'浏览器'异常!\n请检查是否安装了该应用.", Toast.LENGTH_SHORT).show();
     }
(3)打开地图
     try{
      Toast.makeText( PocketSphinxDemo.this, "正在打开地图,请稍后...", Toast.LENGTH_SHORT).show();
      Uri uri=Uri.parse("geo:38.899533,-77.036476");//将字符串转换为uri对象
      Intent intent3=new Intent();
      intent3.setAction(Intent.ACTION_VIEW);
      intent3.setData(uri);
      intent3.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent3);
     }
     catch(ActivityNotFoundException e)
     {
               Toast.makeText(PocketSphinxDemo.this, " 启动'地图'异常!\n请检查是否安装了该应用.", Toast.LENGTH_SHORT).show();
     }
(3)编辑短信(调用发送短信程序)
     Toast.makeText( PocketSphinxDemo.this, "正在打开短信,请稍后...", Toast.LENGTH_SHORT).show();
     Intent intent4=new Intent(Intent.ACTION_VIEW);	//创建一个带Action属性的intent
     intent4.setType("vnd.android-dir/mms-sms");
     startActivity(intent4);
(4)查看联系人
     Toast.makeText( PocketSphinxDemo.this, "正在启动联系人,请稍后...", Toast.LENGTH_SHORT).show();
     Intent intent5 = new Intent(Intent.ACTION_VIEW, ContactsContract.Contacts.CONTENT_URI);
     startActivity(intent5);
(5)打开相机
     Toast.makeText( PocketSphinxDemo.this, "正在启动相机,请稍后...", Toast.LENGTH_SHORT).show();
     Intent intent7=new Intent();
     intent7.setAction(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);	//启动相机app
     startActivity(intent7);
(6)打开图库
     Toast.makeText( PocketSphinxDemo.this, "正在打开图库,请稍后...", Toast.LENGTH_SHORT).show();
     Intent intent8 = new Intent();
     intent8.setType("image/*");
     intent8.setAction(Intent.ACTION_GET_CONTENT);
     startActivity(intent8);
(7)打开计算器
     Toast.makeText( PocketSphinxDemo.this, "正在启动计算器,请稍后...", Toast.LENGTH_SHORT).show();
     Intent intent11 = new Intent();
     intent11.setClassName("com.android.calculator2","com.android.calculator2.Calculator");	//调用setClassName指定了启动哪个应用程序
     startActivity(intent11);
(8)打开系统设置
     Intent intentSet= new Intent(Settings.ACTION_SETTINGS);
     startActivity(intentSet);
(9)打开时钟
     try{
     Intent intentclock=new Intent();
              intentclock.setClassName("com.android.deskclock", "com.android.deskclock.DeskClock");
              startActivity(intentclock);
     }
     catch(ActivityNotFoundException e)
      {
               Toast.makeText(PocketSphinxDemo.this, " 启动'时钟'异常!\n请检查是否安装了该应用.", Toast.LENGTH_SHORT).show();
     }
(10)打开文件管理器
 try{
       Intent intentFile=new Intent();
        intentFile.setAction(Intent.ACTION_VIEW);
       intentFile.setType("text/plain");
      startActivity(intentFile);
     }catch(ActivityNotFoundException e)
     {
         Toast.makeText(PocketSphinxDemo.this, " 启动'文件管理器'异常!\n请检查是否安装了该应用.", Toast.LENGTH_SHORT).show();
     }
(11)打开QQ
try{
      Toast.makeText( PocketSphinxDemo.this, "正在打开QQ聊天工具,请稍后...", Toast.LENGTH_SHORT).show();
      Intent intent12=new Intent();
      intent12.setClassName("com.tencent.mobileqq","com.tencent.mobileqq.activity.SplashActivity");
     intent12.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     startActivity(intent12);
     }
  catch(ActivityNotFoundException e)
  {
       Toast.makeText(PocketSphinxDemo.this, " 启动'QQ'异常!\n请检查是否安装了该应用.", Toast.LENGTH_SHORT).show();
  }
(12)打开微信
 try{
      Toast.makeText( PocketSphinxDemo.this, "正在启动微信客户端,请稍后...", Toast.LENGTH_SHORT).show();
      Intent intent4=new Intent();
       intent4.setClassName("com.tencent.mm","com.tencent.mm.ui.LauncherUI");
       intent4.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       startActivity(intent4);
  }
  catch(ActivityNotFoundException e)
  {
       Toast.makeText(PocketSphinxDemo.this, " 启动'微信'异常!\n请检查是否安装了该应用.", Toast.LENGTH_SHORT).show();
  }
(13)重启手机
String cmd = "su -c reboot";
 try {
          Toast.makeText(PocketSphinxDemo.this, "正在重启手机,请稍后...", Toast.LENGTH_SHORT).show();
           Runtime.getRuntime().exec(cmd);
     } catch (IOException e) {
            // TODO Auto-generated catch block
           new AlertDialog.Builder(PocketSphinxDemo.this).setTitle("Error").setMessage(
                                         e.getMessage()).setPositiveButton("OK", null).show();
                 }
时间: 11-16

Android笔记九.Intent异常处理及常用系统调用的相关文章

android笔记6——intent的使用

今天挑出一节专门来说一下使用intent和intentfilter进行通信. 场景:一个Activity启动另一个Activity. 前面已经讲了Fragment的切换,Fragment顾名思义是基于碎片切换的,假如我们要切换屏幕,或者是service组件等等,这就要用到Intent. 此外还想说明一下,Intent还具有很好的设计思想在里面的.它将各种"启动意图"封装成一个一致编程模型,利于高层次的解耦. 1.Intent属性 Component属性 先来看一段代码: <spa

Android笔记:intent

一.显式intent如下:(1)在intent构造函数传入两个activity文件名Intent intent = new Intent(FirstActivity.this, SecondActivity.class);startActivity(intent);(2)记得在AndroidManifest.xml中为SecondActivity进行注册<activity android:name="SecondActivity" ></activity> 二.

Android笔记八.Intent对象的使用及.apk反编译

 Intent对象的使用及.apk反编译 Jiangdg_VIP http://blog.csdn.net/u012637501 前三节主要学习了Intent对象的作用.属性以及不同Activity之间值的传递,这节将着重学习Intent对象的用法.在我的语音识别项目中,通过使用Inteng对象来启动应用内组件.系统应用程序以及第三方应用程序(如QQ.微信等). 一.Intent对象开发方法 首先,我们还是先学习下Intent对象启动组件(应用)有哪几种方法: 1.利用Intent对象的Comp

Android笔记之Intent传递自定义对象

1. import java.util.List; import android.os.Parcel; import android.os.Parcelable; /** * 1)writeToParcel 方法.该方法将类的数据写入外部提供的Parcel中. * 2)describeContents方法.直接返回0就可以. * 3)静态的Parcelable.Creator<T>接口,本接口有两个方法: * createFromParcel(Parcel in) 实现从in中创建出类的实例的

Android Activity和Intent机制学习笔记

Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见http://www.cnblogs.com/feisky/archive/2010/01/01/1637427.html,由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态). 对于Activity,关键是其生命周期的把握(如下图),其次就是状态的保存和恢复(onSaveInstanceState onR

Android笔记(七十四) 详解Intent

我们最常使用Intent来实现Activity之间的转跳,最近做一个app用到从系统搜索图片的功能,使用到了intent的 setType 方法和 setAction 方法,网上搜索一番,发现实现转跳只是Intent功能的九牛一毛,现在对Intent功能做一个总结,以作备忘. 我们经常使用如下方法实现一个转跳: Intent intent = new Inent(MainActivity.this,SecondActivity.class); startActivity(intent); 其实这

Android学习笔记-Activity&Intent

界面activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="matc

【转载】Android开发学习笔记:Intent的简介以及属性的详解

http://liangruijun.blog.51cto.com/3061169/634411/ 一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Serv

Android开发学习笔记:Intent的简介以及属性的详解【转】

一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互.因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关