Android筆記九.Intent異常處理及常用系統調用

Intent異常處理及常用系統調用

Jiangdg_VIP
https://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("https://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();
                 }

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *