2010-11-02 11 views
8

Desidero implementare un gateway per la gestione delle chiamate in uscita.Android 1.6 equivalente di EXTRA_GATEWAY_URI

nelle ultime versioni di Android 2.x posso fare questo facilmente con la corda in più ACTION_CALL nascosto: "com.android.phone.extra.GATEWAY_URI"

Ma nelle versioni precedenti, come 1.6, I don so come farlo Deve essere possibile perché Google Voice lo sta facendo. Qualcuno può aiutarmi?

Grazie, Emmanuel

+0

In pratica, voglio poter chiamare un numero di telefono, ma avere un numero diverso da visualizzare per l'utente. Questo sarebbe utile per le applicazioni di carte telefoniche, ad esempio. – Emmanuel

+0

Cosa devo fare per ottenere questa risposta? – Emmanuel

+0

Non è il codice originale aperto da qualche parte. È possibile eseguire la scansione semplice dell'implementazione e copiare il codice necessario. – CodingBarfield

risposta

2

Hey Emmanuel, 76% dei dispositivi già eseguito Android 2.x forse questo sforzo è sprecato. Si prevede che il pan di zenzero emergerà entro la fine dell'anno, il che spingerà ulteriormente la percentuale di 1,6 dispositivi. In meno di mezzo anno, Android 2.xe versioni successive supereranno il limite dell'80%. Basta dare un'occhiata alla distribuzione della versione della piattaforma http://d.android.com/resources/dashboard/platform-versions.html. Forse dare un'occhiata al codice sorgente nel progetto Open Source Android.

Ho trovato la stringa menzionata nello InCallScreen.java. Forse questo ti dà un modo di scavare nel vecchio codice sorgente per cercare di capire se puoi accedervi tramite alcune API non documentate. Ma il mio suggerimento sarebbe quello di non disturbare con quegli ultimi 25% di 1.6 dispositivi che spariranno velocemente.

[Aggiornamento] Poiché è necessario farlo funzionare, suggerirei di ricompilare l'app del telefono dal repository git e renderla debugabile in questo modo è possibile vedere esattamente cosa sta succedendo. Probabilmente avere un dispositivo ASOP con 1.6 funzionante sarebbe la soluzione migliore per approfondire il comportamento di Android. Fondamentalmente dovresti riportare in porto tutto il codice che è coinvolto in questa funzionalità in 2.x torna alla 1.6. Dal punto di vista del time to market suggerirei di scaricare l'app con supporto 2.x e rilasciare una seconda versione su misura per 1.6. Ritardare l'uscita solo a causa di 1.6 sembra essere una brutta idea di business.

+0

In un certo senso sono d'accordo con te, ma questo è un requisito del mio datore di lavoro e devo consegnare. Ho esaminato il vecchio codice ma non so come funziona. Ho provato a giocare con gli extra senza successo. Fondamentalmente voglio essere in grado di chiamare un numero di telefono, ma un numero diverso deve essere visualizzato per l'utente. – Emmanuel

+0

Ho appena aggiornato la mia risposta. Dare un'occhiata. – AGrunewald

+0

Sono sicuro di aver capito. Vuoi eseguire il debug dell'applicazione Telefono mentre esegui Google Voice? Non sono sicuro di come farlo ... Per prima cosa devo installare Google Voice sull'emulatore - non ho idea di come farlo. Secondo Google Voice non è disponibile in Canada. Dovrei imbrogliare. – Emmanuel

0

Il codice che utilizza GATEWAY_URI è stato definitivamente aggiunto in Eclair. Guardando in AOSP, in imballaggi/apps/telefono/src/com/android/telefono/InCallScreen.java, quel po 'di codice è completamente inesistente in Ciambella:

// If a provider is used, extract the info to build the 
    // overlay and route the call. The overlay will be 
    // displayed the first time updateScreen is called. 
    if (PhoneUtils.hasPhoneProviderExtras(intent)) { 
     mProviderLabel = PhoneUtils.getProviderLabel(this, intent); 
     mProviderIcon = PhoneUtils.getProviderIcon(this, intent); 
     mProviderGatewayUri = PhoneUtils.getProviderGatewayUri(intent); 
     mProviderAddress = PhoneUtils.formatProviderUri(mProviderGatewayUri); 
     mProviderOverlayVisible = true; 

     if (TextUtils.isEmpty(mProviderLabel) || null == mProviderIcon || 
      null == mProviderGatewayUri || TextUtils.isEmpty(mProviderAddress)) { 
      clearProvider(); 
     } 
    } else { 
     clearProvider(); 
    } 

non riesco a vedere alcuna alternativa. Forse è meglio prendere l'applicazione Telefono da Donut, aggiungere quello che ti serve e rilasciarlo come una nuova applicazione Telefono su dispositivi Donut ...

+0

Stavo anche cercando nel codice sorgente e ho notato che l'API mancava in 1.6 e precedenti. Ma dal momento che Google Voice può farlo, ci deve essere qualche altra API che posso usare per produrre risultati simili. Ho guardato gli extra ma non ho trovato nulla. Trovo strano che per ACTION_CALL il numero di telefono sia specificato sia in EXTRA_PHONE_NUMBER sia nell'URI dell'intento, ma solo il numero dell'URI dell'intenzione sembra avere importanza. Tutto ciò che ho inserito in EXTRA_PHONE_NUMBER sembra essere ignorato. O forse c'è un'azione segreta per effettuare chiamate di Google Voice? – Emmanuel

Problemi correlati