Autore Topic: app per telefonare  (Letto 998 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
app per telefonare
« il: 22 Febbraio 2012, 21:28:14 CET »
0
Salve, nella mia applicazione sto creando una pagina "contatti" dentro la quale voglio inserire il numero di telefono dei vari uffici.
potresti dirmi un modo per far ciò?
magari inserendo il testo come una textview, e implementando in un tasto la funzione di chiamata.. cercando in giro nn ho trovato nulla, ma forse perchè c sn troppi altri risultati con "telefono" "chiama" e simili...
grazie!  ;-)


ho trovato qualcosina qui
Eseguire una chiamata - dichiarazione Intent Manifest - Android Developers Italia

ma nn è esattamente quello che mi serve a me..
praticamente dovrei creare un intent per ogni chiamata (ovvio) qualcuno può buttarmi 2 righe di codice?
inoltre serve dialerfilter ?

infine, dalla documentazione
"public static final String ACTION_CALL

Since: API Level 1
Activity Action: Perform a call to someone specified by the data.
Input: If nothing, an empty dialer is started; else getData() is URI of a phone number to be dialed or a tel: URI of an explicit phone number.
Output: nothing.
Note: there will be restrictions on which applications can initiate a call; most applications should use the ACTION_DIAL.
Note: this Intent cannot be used to call emergency numbers. Applications can dial emergency numbers using ACTION_DIAL, however.
Constant Value: "android.intent.action.CALL"
« Ultima modifica: 22 Febbraio 2012, 21:54:17 CET da gabric »

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:app per telefonare
« Risposta #1 il: 22 Febbraio 2012, 22:15:14 CET »
0
posto qualche piccolo aggiornamento:
questo è il logcat quando provo ad effettuare la chiamate (penso che l'errore lo dia dal manifest)
Codice: [Seleziona]
02-22 21:13:14.511: D/AndroidRuntime(1781): Shutting down VM
02-22 21:13:14.511: W/dalvikvm(1781): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
02-22 21:13:14.700: E/AndroidRuntime(1781): FATAL EXCEPTION: main
02-22 21:13:14.700: E/AndroidRuntime(1781): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=00393881979848 }
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.app.Activity.startActivityForResult(Activity.java:3190)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.app.Activity.startActivity(Activity.java:3297)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at unikore.it.contattiInge$1.onClick(contattiInge.java:36)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.view.View.performClick(View.java:3480)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.view.View$PerformClick.run(View.java:13983)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.os.Handler.handleCallback(Handler.java:605)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.os.Handler.dispatchMessage(Handler.java:92)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.os.Looper.loop(Looper.java:137)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at android.app.ActivityThread.main(ActivityThread.java:4340)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at java.lang.reflect.Method.invokeNative(Native Method)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at java.lang.reflect.Method.invoke(Method.java:511)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-22 21:13:14.700: E/AndroidRuntime(1781):         at dalvik.system.NativeStart.main(Native Method)

questa è la funzione:
Codice (Java): [Seleziona]
 setContentView(R.layout.contattiinge);
             
              Button button_segreInge = (Button) findViewById(R.id.button_segreInge);                            
               
            button_segreInge.setOnClickListener(new OnClickListener() {                        
                                        public void onClick(View v) {
                                                String toDial = "388******"; /** ho anche provato mettendo il prefisso internazionale */
                                                 startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(toDial)));
                                        }
                                });

e infine il manifest

Codice (XML): [Seleziona]
                 <activity  android:name=".contattiInge">
                        <intent-filter>
                          <action android:name="android.intent.action.CALL"/>
                          <category android:name="android.intent.category.DEFAULT"/>                      
                        </intent-filter>
                </activity>  
dove naturalmente contattiInge è la classe che richiama la chiamata

EDIT:

ho aggiunto la stringa "tel:" prima del numero, che a quanto pare è obbligatoria, ma ora fra gli errori del log cat, quello più rilevante mi sembra
"02-22 21:46:04.323: E/AndroidRuntime(2128): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxx cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{4122bf30 2128:unikore.it/10040} (pid=2128, uid=10040) requires android.permission.CALL_PHONE
"  ma nel manifest ho messo l'autorizazione a CALL...
« Ultima modifica: 22 Febbraio 2012, 22:44:42 CET da gabric »

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:app per telefonare
« Risposta #2 il: 22 Febbraio 2012, 22:48:25 CET »
0
ok ho risolto, bastava aggiungere al manifest questi 3 permessi

Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />