Autore Topic: AlertDialog ed outgoingcalls  (Letto 386 volte)

Offline AntonioE.

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Microsoft Windows 7 x64
AlertDialog ed outgoingcalls
« il: 11 Luglio 2013, 18:36:12 CEST »
0
Salve, dovrei fare in modo che quando un utente fa partire una telefonata, il sistema mostri un popup per fargli scegliere tra telefonata personale e telefonata aziendale ( nel secondo caso aggiungere un determinato prefisso al numero ) e far solo dopo partire la chiamata.

L'idea iniziale era di riconoscere a quale gruppo appartiene il numero che si sta componendo, ma ho visto che la rubrica di default di android non permette di gestire i gruppi se non tramite il web, previa sincronizzazione, utilizzo di supercazzola e scappellamento a destra ( in caso contrario sarei felicissimo se mi diceste come fare ).

Il piano B quindi è di:

1) intercettare la telefonata in uscita ( fatto, testato, e funzionante )
2) tenere la telefonata in attesa, mostrare un alert dialog per la scelta del tipo di chiamata con 2 pulsanti "personale" e "aziendale"
3) far partire la telefonata solo dopo il push di una delle due suddette scelte.


questa è la classe EDIT: riesco a far uscire l'alert, oer quanto riguarda la chiamata la chiudo e la rifaccio da capo al push di uno dei pulsanti, ma non parte .... non è che dia errori, non parte proprio, rimane un riquadro in primo piano con dentro scritto "simple call" ( il nome dell'applicazione ) ed in secondo piano il tastierino numerico usato per comporre il numero ...

Citazione
public class OutgoingCallReceiver extends BroadcastReceiver {

   @Override
   public void onReceive(Context context, Intent intent) {
      // TODO Auto-generated method stub

      
      // il numero che si stava per chiamare
      final String numero = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

      
      Intent in = new Intent(context,AlertActivity.class);
      in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      context.startActivity(in);


      Toast toast = Toast.makeText(context, "Chiamata verso: " + numero, 1500);
      toast.show();
   }

}


Logcat non serve più, ora l'alert compare quindi edito e tolgo.

questa è la seconda classe che mi fa comparire l'alert:

Citazione
public class AlertActivity extends Activity {
   String numero;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      numero = getIntent().getStringExtra("com.example.simplecall.numero");
      Toast toast = Toast.makeText(this, "numero : " + numero, 5000);
      toast.show();
      showSettingsAlert();
      
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }
   
    /**
     * Mostra una finestra di dialogo
     * Cliccando su Impostazioni si accede al menù di configurazione
     * */
    public void showSettingsAlert(){
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
     
        // Titolo della finestra
        alertDialog.setTitle("Tipo di chiamata");
 
        // Mostra l'avvertimento
        alertDialog.setMessage("Che tipo di chiamata effettuare?");
 
        // Cliccando su Impostazioni ...
        alertDialog.setPositiveButton("Aziendale", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {
                numero = "4888"+numero;
                makeCall(numero, dialog);
            }
        });
 
        // Cliccando su Annulla
        alertDialog.setNegativeButton("Personale", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
               makeCall(numero, dialog);
            }
        });
 
        // Mostra la finestra di alert
        alertDialog.show();
    }
   
    private void makeCall(String number, DialogInterface dial) {
        try {
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:"+number));
            //dial.dismiss();
            startActivity(callIntent);
        } catch (ActivityNotFoundException activityException) {
             activityException.printStackTrace();
        }
    }

}





« Ultima modifica: 11 Luglio 2013, 20:22:16 CEST da AntonioE. »
Non c'è cattivo più cattivo di un buono che diventa cattivo