標籤:android開發 應用程式
Intent異常處理及常用系統調用Jiangdg_VIPhttp://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)開啟QQtry{ 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(); }
Android筆記九.Intent異常處理及常用系統調用