2010-03-19 21 views
8

Önceden oluşturulmuş bir uygulamam var ve bir çağrı sona erdiğinde başlatılması gereken bir özellik eklemek istiyorum. Bunu nasıl başarabilirim? BuArama sona erdiğinde niyeti var mı?

<activity android:name="Filter"> 
    <intent-filter> 
      <category android:name="android.intent.SOMETHING" /> 
    </intent-filter> 
</activity> 

gibi benim tezahür şey bildirerek yeterli olabileceğini düşündüm, ama Intent ne tür ben filtreye koymak zorunda? Bir çağrı başlatıldığında algılar sadece Intents'i bulundu belgelerinde Looking

.

Mümkün aradığım şey var mı?

cevap

16

Arama durumundaki değişiklikleri dinlemek için PhoneStateLisenter kullanabilirsiniz.

Yani LISTEN_CALL_STATE değişikliğini dinle.

onCallStateChanged yöntemiyle.

Yani OffHook gelen durum değişiklikleri rölanti zaman bir yayın alıcı kullanarak yapmış

+1

Mmm ... Bu Niyet Başvurumu yayın niyet gibi başlamamış olsa dahi yakalanmış olabileceğini istedi. Bu mümkün mü? – lbedogni

+0

Bunun için bir sistem amacı yok, çağrı durumunun dinlenmesini sağlayan arka planda çalışan ve OFFHOOK'tan IDLE'ye değiştiğinde uygulamanızı başlatmak için özel bir niyet gönderen küçük bir hizmet yaratabileceğinizi düşünmüyorum. –

+0

Bunun iyi olabileceğini düşünün fikir teşekkürler. – lbedogni

20

uygulamanız başlar. Eserleri! Kod şöyle görünür -

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.gopi" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 

     <receiver android:name=".IncomingCallTracker"> 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 

    </application> 
</manifest> 

gibi IncomingCallTracker kod parçacığı görünüyor - Sen pakette anahtarın 'devlet' için bakabilirsiniz

public class IncomingCallTracker extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Bundle bundle = intent.getExtras(); 

      Set<String> keys = bundle.keySet(); 
     for (String key : keys) { 
       Log.i("MYAPP##", key + "="+ bundle.getString(key)); 
     }  
    } 

} 

. Değeri 'IDLE' olduğunda, arama sona ermiş demektir ve buna dayanarak yapmak istediğiniz herhangi bir eylemi gerçekleştirebilirsiniz.

İlgili konular