0

Android で ContactPicker を使用すると問題が発生します。私のコードは次です

public void showContacts(View v){
        phoneNumber.setText("");

        Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);  
        startActivityForResult(contactPickerIntent, 1001); 
    }

    @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        if (resultCode == RESULT_OK) {  
            switch (requestCode) {  
                case 1001:
                    Cursor cursor = null;  
                    String[] numeros = null;
                    try {  
                        Uri result = data.getData();
                        String id = result.getLastPathSegment(); 
                        cursor = getContentResolver().query(Phone.CONTENT_URI, 
                                null, 
                                Phone.CONTACT_ID + "=?", new String[] {id}, null);

                        int phoneIdx = cursor.getColumnIndex(Phone.NUMBER);
                        if(cursor.getCount() > 0){
                            numeros = new String[cursor.getCount()];
                            if (cursor.moveToFirst()) {
                                int cont = 0;
                                do{
                                    numeros[cont] = cursor.getString(phoneIdx);
                                    cont++;
                                }while(cursor.moveToNext());
                            }
                        }
                    } catch (Exception e) {  
                        Log.e("Exception", "Failed to get email data", e);  
                    } finally {  
                        if (cursor != null) {  
                            cursor.close();  
                        }
                        if(numeros != null){
                            if(numeros.length > 1){
                                showNumbers(numeros);
                            }else{
                                phoneNumber.setText(numeros[0]);
                            }
                        }
                    } 
                break;
            }
        }
    }

    private void showNumbers(final String[] numeros){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setSingleChoiceItems(numeros, -1, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogo, int item) {
                phoneNumber.setText(numeros[item]);
                dialogo.cancel();
            }
        });

        builder.create().show();
    }

基本的に、最初のメソッドで ContactPicker を呼び出し、2 番目のメソッドでこの応答を受け取り、それを処理して、ユーザーが複数の電話を持っているかどうかを検証します。

問題は、アルゴリズムが 6 倍の数値を返すことです。なぜそれが起こるのかわかりません。

4

0 に答える 0