2013-03-14 46 views
0

我目前正在致力於啓動程序活動(min SDK版本:7),並且偶然發現了一個嚴重問題。是否有任何高效方法由我可以訪問/打開默認應用(如撥號器,瀏覽器,短信對話列表,電子郵件客戶端,系統設置等),這是在不同的設備中找到(像三星HTC索尼LG摩托羅拉等),但有不同的軟件包名稱秒。如何在不同設備上訪問/打開默認應用程序

我知道,我可以通過調用的意圖訪問它們,比如我可以打開默認短信客戶端像這樣:

Intent intent = new Intent("android.intent.action.MAIN"); 
       intent.setComponent(new ComponentName("com.android.mms","com.android.mms.ui.ConversationList")); 
       startActivity(intent); 

但包名稱不同,當涉及到不同的製造商(像的那些以上提及) 即,在打開Motorola裝置的SMS客戶端的情況下的代碼改變,以便:

Intent moto_intent = new Intent("android.intent.action.MAIN"); 
       intent.setComponent(new ComponentName("com.motorola.blur.conversations","com.motorola.blur.conversations.ui.ConversationList")); 
       startActivity(moto_intent); 

回答

0

使用implicit意圖(而不是明確的意圖)。

在你的情況,你會使用ACTION_SEND意圖

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra("address", "5551234567"); 
intent.putExtra("sms_body", "Hi mom"); 
// intent.putExtra(Intent.EXTRA_STREAM, imageUri);   
// intent.setType("image/jpeg"); 
startActivity(intent); 

這種方法也將誰喜歡使用自己的第三方SMS應用的用戶。

+0

謝謝史蒂芬,但我不想讓我的用戶到任何第三方的短信應用程序。我只想將他/她引導至設備提供的默認應用程序(本例中爲短信客戶端)。 – Sathya 2013-03-14 07:31:06

+0

如果用戶沒有安裝任何第三方應用程序,則隱式意圖將引導他/她直接訪問該默認系統應用程序。如果用戶確實安裝了第三方應用程序,則會要求用戶做出選擇,但我不明白爲什麼會這麼糟糕。爲什麼作爲用戶被迫使用默認的系統短信應用程序時,我每天使用不同的系統?無論如何,我想你可以先嚐試明確的意圖(至少你知道的意圖),如果那些不在那裏,你可以回到隱含的意圖。 – 2013-03-14 07:40:43

相關問題