2012-05-24 81 views
3

我只想打開android設備的電話應用程序。我不想提供該應用程序的電話號碼。只是想打開它。
我正在使用電話應用程序的包名稱來打開它。因爲我可以通過下面的代碼通過該包名打開任何應用程序。

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.android.contacts"); startActivity(launchIntent);

Android開放式電話應用程序

我無法打開電話聯繫人應用與上面的代碼。可能是什麼問題?

回答

18

Intents旨在爲您提供更通用的訪問操作的方式,例如打開文件(這裏沒有pwn意圖(該死!))。如果你不得不指定你想要做的任何事情,那麼這將是非常有限的。不過,這裏有一些你可能會追求的目標。

//For the contacts (picking one) 
Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
//For the contacts (viewing them) 
Intent i = new Intent(Intent.ACTION_VIEW, ContactsContract.Contacts.CONTENT_URI); 
//For the dial pad 
Intent i = new Intent(Intent.ACTION_DIAL, null); 
//For viewing the call log 
Intent i = new Intent(Intent.ACTION_VIEW, CallLog.Calls.CONTENT_URI); 

讓自己useful intents文件的地方給你時間保存在將來,你會感謝我以後的一天。

當然,要開始這些意圖,除了第一個外,您還需要startActivity(i);,因爲您希望聯繫人回來,而且您需要startActivityForResult(i);但這是另一回事。

+0

我不想接電話。我只想打開本地電話。 – MobiDev

+0

你甚至嘗試過嗎?因爲如果你這樣做了,你會看到他們的工作。 –

+0

ACTION_DIAL確實有效,但我想用軟件包名稱打開它。如果我使用你的方法之一,我需要硬編碼它打開電話和聯繫人應用程序是不好的。除了這兩個應用程序,我可以打開任何我想要的包名稱的應用程序。試試我的代碼... – MobiDev

2

公共靜態最終字符串ACTION_DIAL

自:API級別1活動操作:由 數據指定撥號。這顯示了一個正在撥打號碼的用戶界面,允許用戶 明確發起呼叫。 輸入:如果沒有,則啓動一個空撥號器 ;

來源:http://developer.android.com/reference/android/content/Intent.html#ACTION_DIAL

http://developer.android.com/reference/android/content/Intent.html#ACTION_CALL可能是還你在找什麼。

如果您想從活動開始撥打電話,只需使用活動的上下文中的http://developer.android.com/reference/android/content/Context.html#startActivity(android.content.Intent)。

相關問題