Autore Topic: far partire diverse activity da stessa classe asynctask  (Letto 530 volte)

Offline Bito92

  • Utente junior
  • **
  • Post: 51
  • Respect: +7
    • Mostra profilo
far partire diverse activity da stessa classe asynctask
« il: 08 Febbraio 2012, 10:17:17 CET »
0
ciao a tutti,
vi chiedo un ultimo piccolo aiuto  :-)

ho una schermata con diversi pulsanti e per ogni activity e richiesta un'autenticazione tramite un ws.
per effettuare questa autenticazione ho utilizzato la classe asynctask in quanto sto utilizzanto android 4.
la mia domanda è: c'e un modo per utilizzare la stessa classe e far partire diverse activity?

vi ringrazio in anticipo :)

posto il codice, cosi è piu chiaro  :-)

Codice (Java): [Seleziona]
public class main extends ActionBarActivity {
       
        private sevenDb sdb;
        public ImageView img1, img2, img3, img4, img5, img6, img7;
        private ProgressDialog pd;
       
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        /* Controllo che l'applicazione sia stata configurata correttamente */
        sdb = new sevenDb(getBaseContext());
        sdb.open();
        if (sdb.getParams("CODFISCALE") == null || sdb.getParams("TARGA") == null || sdb.getParams("CODCLIENTE") == null){
                configura();  
                }      
       
        sdb.close();      
        /* E' tutto ok allora eseguo aggiungendo i listener alle al menu */
        addListener();
       
    }
   
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        /* Crea il menu dell'action bar */
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        /* Esegue operazioni su click menu */
        switch (item.getItemId()) {
            case android.R.id.home:
                //Toast.makeText(this, "Tapped home", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_imp:
                Intent i = new Intent(getApplicationContext(), Impostazioni.class);
                startActivity(i);
                break;
            case R.id.menu_about:
                Intent ii = new Intent(getApplicationContext(), about.class);
                startActivity(ii);
                break;
        }
        return super.onOptionsItemSelected(item);
    }
   
    /* Setto l'alert dialog*/
        private void configura() {
                // TODO Auto-generated method stub
                new AlertDialog.Builder(this)
                .setTitle("Prima configurazione")
                .setMessage( "L'applicazione non risulta configurata, effetture la configurazione prima di continuare altrimenti uscire")
                .setPositiveButton("Configura", new DialogInterface.OnClickListener() {
                       
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                Intent i = new Intent(getApplicationContext(), Impostazioni.class);
                startActivity(i);
                        }
                })
                .setNegativeButton("Annulla", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                               
                        }
                })
                .show();
        }
       
        /* Aggiungo i listener alle al menu */
        private void addListener(){
               
                /* Segnala un sinistro */
        img1 = (ImageView)findViewById(R.id.img1);
        img1.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                pd = ProgressDialog.show(main.this, "", "E' in corso la verifica di autenticazione");
                                soapCall sc = new soapCall();
                                sc.execute(main.this); 
                        }
                });
       
        /* Segnala un guasto */
        img2 = (ImageView)findViewById(R.id.img2);
        img2.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                Intent i = new Intent(getApplicationContext(), guasto.class);
                                startActivity(i);
                        }
                });
       
        /* Richiedi */
        img3 = (ImageView)findViewById(R.id.img3);
        img3.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                Intent i = new Intent(getApplicationContext(), Richiedi.class);
                                startActivity(i);
                        }
                });
       
        /* Rent a Car */
        img4 = (ImageView)findViewById(R.id.img4r);
        img4.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                Intent i = new Intent(getApplicationContext(), rent.class);
                                startActivity(i);
                        }
                });
       
        /* Stato Contratto */
        img5 = (ImageView)findViewById(R.id.img5);
        img5.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                Intent i = new Intent(getApplicationContext(), contratto.class);
                                startActivity(i);
                        }
                });
       
        /* Parla con Noi */
        img6 = (ImageView)findViewById(R.id.img6);
        img6.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                               
                                /* Chiamo il web-service per recuperare l'utente di riferimento da chiamare */
                                WebService cws = new WebService();
                               
                                sdb = new sevenDb(getBaseContext());
                        sdb.open();
                        String codfis = sdb.getParams("CODFISCALE");
                        String targa  = sdb.getParams("TARGA");
                        String codcli = sdb.getParams("CODCLIENTE");
                        sdb.close();
                               
                                cws.setSoapAction("[url=http://tempuri.org/WSmobile/Service1/getTelService"]tempuri - Bing[/url]);
                            cws.setMethodName("getTelService");
                            cws.setNameSpace("[url=http://tempuri.org/WSmobile/Service1"]tempuri - Bing[/url]);
                            cws.setUrl("[url=http://www.carserver.it/WSmobile/service1.asmx?WSDL"]WSmobile Servizio Web[/url]);
                           
                            telInput ti = new telInput();
                            ti.setCodFisc(codfis);
                            ti.setTarga(targa);
                           
                            String authValue[] = new String[4];
                            authValue[0] = codfis;
                            authValue[1] = targa;
                            authValue[2] = "";
                            authValue[3] = codcli;
                           
                            String authLabel[] = new String[4];
                            authLabel[0] = "CodFis";
                            authLabel[1] = "Targa";
                            authLabel[2] = "NumTel";
                            authLabel[3] = "CodCli";
                           
                            SoapSerializationEnvelope response =  cws.start("telInput", ti, authLabel, authValue);
                            SoapObject response2 = (SoapObject) response.bodyIn;
                            if (response != null) {
                                        /* Controllo se sono stati passati dei valori validi */
                                        if (utils.isIntNumber(response2.getProperty(0).toString())) {
                                                /* Faccio la chiamata per far partire il web service */
                                                Intent callIntent = new Intent(Intent.ACTION_CALL);
                                                callIntent.setData(Uri.parse("tel:"  + response2.getProperty(0).toString()));
                                            startActivity(callIntent);
                                        } else {
                                                Toast.makeText(getApplicationContext(), "Non è stato recuperato un numero di telefono", Toast.LENGTH_SHORT);
                                        }
                            }
                        }
                });
       
        /* Filiale Vicina  */
        img7 = (ImageView)findViewById(R.id.img7);
        img7.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {                  
                                Intent i = new Intent(getApplicationContext(), mappa.class);
                        startActivity(i);
                        }
                });
        }

        public class soapCall extends AsyncTask<Context, String, Boolean>{

                private boolean check = false;
                private SoapSerializationEnvelope response;
               
                @Override
                protected Boolean doInBackground(Context... params) {
               
                        sevenDb sdb;   
                        WebService cws = new WebService();
                       
                        sdb = new sevenDb(getBaseContext());
                        sdb.open();
                String codfis = sdb.getParams("CODFISCALE");
                String targa  = sdb.getParams("TARGA");
                String codcli = sdb.getParams("CODCLIENTE");
                sdb.close();
                       
                if (codfis != null || targa != null || codcli != null){
                        cws.setSoapAction("[url=http://tempuri.org/WSmobile/Service1/getConducente"]tempuri - Bing[/url]);
                            cws.setMethodName("getConducente");
                            cws.setNameSpace("[url=http://tempuri.org/WSmobile/Service1"]tempuri - Bing[/url]);
                            cws.setUrl("[url=http://www.carserver.it/WSmobile/service1.asmx?WSDL"]WSmobile Servizio Web[/url]);
                           
                            String authValue[] = new String[4];
                            authValue[0] = codfis;
                            authValue[1] = targa;
                            authValue[2] = "";
                            authValue[3] = codcli;
                           
                            String authLabel[] = new String[4];
                            authLabel[0] = "CodFis";
                            authLabel[1] = "Targa";
                            authLabel[2] = "NumTel";
                            authLabel[3] = "CodCli";
                           
                            /* aggiorno la progress dialog */
                    publishProgress("Invio richiesta in corso...");
                            response =  cws.start(authLabel, authValue);
                           
                }else{
                        check = false;
                }
               
                        return check;
                }
               
                protected void onProgressUpdate(String...values){
                        pd.setMessage(values[0]);
                }
               
                protected void onPostExecute(Boolean result){
                        pd.dismiss();
                        SoapObject response2 = (SoapObject) response.bodyIn;
                    if (response != null) {
                                /* Controllo se sono stati passati dei valori validi */
                                if (response2.getProperty(0).toString().equals("Non autenticato") ||
                                                response2.getProperty(0).toString() == null){
                                        check = false;
                                        Toast.makeText(getApplicationContext(), "Errore durante l'autenticazione", Toast.LENGTH_LONG).show();
                                }else{
                                        check = true;
                                        Intent i = new Intent(getApplicationContext(), sinistro.class);
                                        startActivity(i);
                                }
                        }else{
                                check = false;
                                Toast.makeText(getApplicationContext(), "Errore durante l'autenticazione", Toast.LENGTH_LONG).show();
                        }
                }
        }
}