2013-04-26 29 views
9

Bu tür amaçlarla ilgili bilgi eksik, ancak bir süre için cevap bulamadık gibi görünüyor.Hiçbir eylem eylem ile işlenecek faaliyet bulundu.DIAL

Tek parçalı bir etkinliğim var. fragmanı bir temas çağrı amacıyla bu kodu yürütür:

private void onCall() { 
    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(contact.getBusinessPhone())); 
    startActivity(intent); 
} 

da izin

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 

çıkış No Activity found to handle Intent ve uygulama çöker dahildir. Yanlış yapıyorum

<activity android:name="activities.ContactActivity">    
    <intent-filter> 
     <action android:name="android.intent.action.DIAL" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

: Burada

parçasını tutan faaliyet tezahür uygulanmasını nedir? Bunun için bildirilen bazı özel etkinliklere ihtiyacım var mı?

+0

contact.getBusinessPhone(), dönüş değeri ile başlayan tel:? –

+0

adresine bakın: http://stackoverflow.com/questions/5403308/make-a-phone-call-click-on-a-button – etienne

+0

cevap

54

Bildirimde amaç niyet filtresini bildirmeniz ve ACTION_DIAL için herhangi bir izin almanız gerekmez. Benim uygulanması

private void startDialActivity(String phone){ 
    Intent intent = new Intent(Intent.ACTION_DIAL); 
    intent.setData(Uri.parse("tel:"+phone)); 
    startActivity(intent); 
} 

da kontrol etmek iyidir arayın telefon otomatik olarak "Kişiye Ekle" geçiş bir çevirici olmadan çünkü tabletlerde benim için daha iyi çalıştı cihaza

private boolean isTelephonyEnabled(){ 
    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
    return telephonyManager != null && telephonyManager.getSimState()==TelephonyManager.SIM_STATE_READY; 
} 
+0

Ben olsaydım +2 verecekti. Bir cevap için 1 ve uygulama aynı zamanda tablet hedeflenmişse önemli olan isTelephonyEnabled sorununu işaret etmek için 1'dir. Teşekkürler! –

+7

TelephonyManager.SIM_STATE_READY, telefonu destekleyen CDMA telefonları için başarısız olacaktır (örneğin, bazı Verizon telefonları). Yani eğer 'tm.getPhoneType()! = TelephonyManager.PHONE_TYPE_GSM', 'context.getPackageManager()' ı kontrol etmek isteyecekseniz, gerçekten telefon olmadığından emin olmak için bir tablet olup olmadığını kontrol etmek için hasSystemFeature (PackageManager.FEATURE_TELEPHONY). SIM kartsız, ancak telefonlu bir telefon. –

+1

@ iCode4Food Cihazın Hangouts Dialer gibi bir VoIP çeviriciye sahip olup olmadığını kontrol etmek için PackageManager.FEATURE_TELEPHONY adresini kontrol edin. – miguel

5

Intent.ACTION_VIEW desteklenir.