连接...或无效的mmi代码android studio

时间:2015-11-10 10:24:20

标签: java android sqlite call

我的应用程序包含一个列表视图,其中包含从数据库中检索的数据。该数据库包含以下列:cognomenomeruolotelefono。 当我点击某个项目时,会打开一个包含2个按钮的对话框:callsms

我希望当我点击按钮call时,我将呼叫转移到与该行对应的号码。 问题是,当我单击按钮时,出现错误消息:>连接问题或无效的mmi代码。

我的主要内容如下。

public class ListaContatti extends ListActivity {

    PersonaManager manager;
    List<Persona> lista = new ArrayList<>();
    TextView visualizza;
    private PersonaHelper mPersonaHelper;
    private static final String TAG = "MyActivity";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_contatti);
        mPersonaHelper = new PersonaHelper(this);
        manager = new PersonaManager(this);
        manager.open();
        visualizzaLista();
        //stampaCose();
        manager.close();

        final ArrayAdapter<Persona> adapter = new ArrayAdapter<>(this, R.layout.row, R.id.textViewList, lista.toArray(new Persona[0]));

        setListAdapter(adapter);

    }

    protected void onListItemClick(ListView list, View v, int position, long id) {

        final Dialog dialog = new Dialog(this);
        dialog.setTitle("Continua con ");
        dialog.setContentView(R.layout.custom_dialog_layout);

        TextView view = (TextView)findViewById(R.id.textViewList);


        final Button call = (Button) dialog.findViewById(R.id.call);
        Button sms = (Button) dialog.findViewById(R.id.sms);
        //Button social = (Button) dialog.findViewById(R.id.social);

        // add PhoneStateListener
        PhoneCallListener phoneListener = new PhoneCallListener();
        TelephonyManager telephonyManager = (TelephonyManager) this
                .getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);

        SQLiteDatabase db = mPersonaHelper.getReadableDatabase();
        final Cursor cursor = db.rawQuery("SELECT TELEFONO FROM contatti", null);


        call.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                cursor.moveToFirst();
                final int numeroTelefono = cursor.getColumnIndex(PersonaHelper.TELEFONO);

                while (cursor.isAfterLast() == false) {
                    //view.append("n" + cursor.getString(numeroTelefono));
                    cursor.moveToNext();
                }

                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:" + numeroTelefono ));
                //callIntent.setData(Uri.parse("tel" + db.query("contatti", new String[]{"TELEFONO"}, null, null, null, null, null)));
                startActivity(callIntent);
            }
        });

        sms.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {

                    Intent sendIntent = new Intent(Intent.ACTION_VIEW);
                    sendIntent.putExtra("sms_body", "default content");
                    sendIntent.setType("vnd.android-dir/mms-sms");
                    startActivity(sendIntent);

                } catch (Exception e) {
                    Toast.makeText(getApplicationContext(),
                            "SMS faild, please try again later!",
                            Toast.LENGTH_LONG).show();
                    e.printStackTrace();
                }
            }
        });

        dialog.show();
    }


    private void stampaCose() {
        StringBuilder sb = new StringBuilder();
        for (Persona attuale : lista) {
            sb.append(attuale.toString());
            sb.append("\n");
        }
    }
    private void visualizzaLista() {
        Cursor cursor = manager.getPersoneSalvate();
        lista.clear();
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {

            String cognome = cursor.getString(cursor.getColumnIndex(PersonaHelper.COGNOME));
            String nome = cursor.getString(cursor.getColumnIndex(PersonaHelper.NOME));
            String ruolo = cursor.getString(cursor.getColumnIndex(PersonaHelper.RUOLO));
            String numero = cursor.getString(cursor.getColumnIndex(PersonaHelper.TELEFONO));
            //String mail = cursor.getString(cursor.getColumnIndex(PersonaHelper.COLUMN_MAIL));
            // String descrizione = cursor.getString(cursor.getColumnIndex(PersonaHelper.COLUMN_DESCRIZIONE));

            //lista.add(new Persona(cognome,nome, numero, mail));  // al posto dei due null mettere mail e descrizione
            lista.add(new Persona(cognome, nome, ruolo, numero));

            cursor.moveToNext();
        }

    }

    //monitor phone call activities
    private class PhoneCallListener extends PhoneStateListener {

        private boolean isPhoneCalling = false;

        String LOG_TAG = "LOGGING 123";

        @Override
        public void onCallStateChanged(int state, String incomingNumber) {

            if (TelephonyManager.CALL_STATE_RINGING == state) {
                // phone ringing
                Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
            }

            if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
                // active
                Log.i(LOG_TAG, "OFFHOOK");

                isPhoneCalling = true;
            }

            if (TelephonyManager.CALL_STATE_IDLE == state) {
                // run when class initial and phone call ended,
                // need detect flag from CALL_STATE_OFFHOOK
                Log.i(LOG_TAG, "IDLE");

                if (isPhoneCalling) {

                    Log.i(LOG_TAG, "restart app");

                    // restart app
                    Intent i = getBaseContext().getPackageManager()
                            .getLaunchIntentForPackage(
                                    getBaseContext().getPackageName());
                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);

                    isPhoneCalling = false;
                }

            }
        }
    }

}

0 个答案:

没有答案