VoIP uygulamaları, aramalarını sistem arama kaydına entegre edebilir. Bu sayede kullanıcılar, VoIP görüşmesi geçmişlerini sistem numara çevirici uygulamasında merkezi olarak görebilir ve aramaları doğrudan numara çevirici uygulamasından geri çevirebilir. Bu kılavuzda, VoIP görüşmesi uygulamalarında ve sistem numara çevirici uygulamalarında yapılması gereken değişiklikler açıklanmaktadır.
Arama uygulamasında yapılan değişiklikler
VoIP uygulamanızı sistem görüşme günlüğüyle entegre etmek için aşağıdaki adımları uygulayın.
Geri arama intent filtresini kaydetme
Sistem tarafından korunan amaç filtresini TelecomManager.ACTION_CALL_BACK kaydedin.
Bu amaç filtresi düzgün bir şekilde kaydedildikten sonra, uygulamanızın CallsManager.addCall veya diğer ilgili Telecom API'lerini kullanarak eklediği tüm aramalar sistem tarafından otomatik olarak kaydedilir. Sistem, bu kayıtlı niyeti kullanarak daha sonra kullanıcı, aramayı geri döndürmek için çeviricide bir VoIP arama günlüğü girişi seçtiğinde uygulamanıza geri çağırma işlevi gönderir.
<!-- Activity to handle the callback intent from the system dialer --> <activity android:name=".VoipCallActivity" android:exported="true"> <!-- Register callback intent --> <intent-filter> <action android:name="android.telecom.action.CALL_BACK" /> </intent-filter> </activity>
Arama kaydını hariç tutma
Geri arama kaydedildikten sonra tüm aramalar sistem çeviricisinde günlüğe kaydedilir. Aramaları tek tek hariç tutmak için isLogExcluded boolean değerini CallAttributesCompat içinde true olarak ayarlayın.
CallAttributesCompat( displayName = displayName, address = address, isLogExcluded = excludeCallLogging, // to exclude call from logging direction = if (isIncoming) { CallAttributesCompat.DIRECTION_INCOMING } else { CallAttributesCompat.DIRECTION_OUTGOING }, callType = CallAttributesCompat.CALL_TYPE_AUDIO_CALL, callCapabilities = ( CallAttributesCompat.SUPPORTS_SET_INACTIVE or CallAttributesCompat.SUPPORTS_STREAM or CallAttributesCompat.SUPPORTS_TRANSFER ), )
Geri aramaları yönetme
CallsManager.addCall üzerinden eklenen aramalar, CallControlScope.getCallId aracılığıyla benzersiz bir UUID alır.
// check the intent action for CALL_BACK if (intent.action == TelecomManager.ACTION_CALL_BACK) { launchCall( // fetching stored call details for the UUID to initiate callback callDetails = getCallDetails( uuid = intent.getStringExtra(TelecomManager.EXTRA_UUID) ) ) }
Arama kaydı girişlerini doğrulama
Sistem arama kaydı, sınırlı sayıda giriş tutar ve sonunda eski arama kayıtlarını siler. Uygulama, geri arama işleme için UUID'ların arama ayrıntılarıyla eşlemesini sakladığından, sistem arama günlüğünde hangi UUID'ların hala mevcut olduğunu düzenli olarak kontrol etmelidir. Bir UUID artık sistem günlüğünde yoksa kullanıcı bu arama için geri arama başlatamaz ve uygulama, eşlemeyi yerel depolama alanından güvenli bir şekilde kaldırabilir. Bu uygulama, depolama alanını optimize etmeye yardımcı olur.
Sistem günlüğünde uygulamayla ilişkilendirilen mevcut UUID listesini almak için CallLog.Calls.CONTENT_VOIP_URI kullanın.
Numara çevirici uygulamasında yapılan değişiklikler
Çevirici uygulamasının VoIP görüşmesi günlüklerini göstermesini ve VoIP uygulamalarına geri arama başlatmasını sağlamak için aşağıdaki adımları uygulayın.
Numara çevirici uygulamasında VoIP görüşmesi günlüklerini görüntüleme
Varsayılan olarak, VoIP uygulamalarının arama kayıtları numara çevirici uygulamasında görünmez. Entegre arama kayıtlarını numara çevirici uygulamasında göstermek için aşağıdakileri yapın:
Android 16.1'de (API düzeyi 36.1), VoIP görüşmesi günlüklerini göstermek için içerik sağlayıcıya
include_voip_callssorgu parametresini ekleyin:CallLog.CallsCallLog.Calls.CONTENT_URI.buildUpon() .appendQueryParameter("include_voip_calls", "true") .build()
Android 17 (API düzeyi 37) ve sonraki sürümlerde aşağıdaki resmîleştirilmiş içerik sağlayıcıyı ve parametre anahtarını kullanın:
Numara çevirici uygulamasından geri aramaları başlatma
Çeviriciden geri arama başlatmak için TelecomManager.placeCall simgesini kullanın. Platform, doğru VoIP uygulamasını başlatmak için arama kaydı girişinin benzersiz CallLog.Calls._ID değerini kullanır. Bu başlatma işlemine, geri arama başlatmak için sistem tarafından tanımlanan bir işlem olan TelecomManager.ACTION_CALL_BACK intenti dahildir. Bu amaç, TelecomManager.EXTRA_UUID amaç ekstrasında görüşmenin UUID bilgisini içerir. Böylece VoIP uygulaması, hangi görüşmenin geri arandığını belirleyebilir.
// Uri generated with unique ID of the call log entry to launch the respective VoIP app for callback val address = ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI, callId) // extra information required to initiate callback val extras = Bundle() telecomManager.placeCall(address, extras)