0

我正在尝试使用 getContentResolver().query() 方法获取联系电话。但它没有得到任何数字。这是我的代码和应用程​​序文件。

活动课

    abc = (Button) findViewById(R.id.button);
    abc.setOnClickListener(new View.OnClickListener() {
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onClick(View v) {
            ContentResolver contentResolver = getContentResolver();
            Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
            try {
                if (cursor.getCount() > 0) {
                    while (cursor.moveToNext()) {
                        String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                        String contact_Id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                        String Numbers = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        Cursor cursor_phone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?" , new String[]{contact_Id}, null);

                        while (cursor_phone.moveToNext()) {
                            String phNumber = cursor_phone.getString(cursor_phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                            Numbers = phNumber;
                            int PHONE_TYPE = cursor_phone.getInt(cursor_phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));

                            switch (PHONE_TYPE) {
                                case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
                                    Numbers += "Home" + phNumber + "\n";
                                    break;
                                case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
                                    Numbers += "Mobile" + phNumber + "\n";
                                    break;
                                case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
                                    Numbers += "Work" + phNumber + "\n";
                                    break;
                            }
                        }
                        Toast toast = Toast.makeText(Context, name + Numbers, Toast.LENGTH_SHORT);
                        toast.show();

                    }

                } else {
                    Toast toast = Toast.makeText(a, "Nothing", Toast.LENGTH_SHORT);
                    toast.show();
                }
            }
            catch (Exception Ex)
            {
                Log.d(Ex.toString(),"");
            }

        }

    });

构建 Gradle 文件

apply plugin: 'com.android.application'    
android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.metrolixsolutions.contactgetter"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}    

cursor_phone没有任何数字。

4

1 回答 1

0

您不需要第二个查询

    abc = (Button) findViewById(R.id.button);
abc.setOnClickListener(new View.OnClickListener() {
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public void onClick(View v) {
        ContentResolver contentResolver = getContentResolver();
        Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
        try {
            if (cursor.getCount() > 0) {
                while (cursor.moveToNext()) {
                    String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    String contact_Id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); // should be ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                    // this is the phone number
                    String Numbers = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    // dont do a toast inside a loop, try Log.d
                    // you will have to import Log 
                    Log.d("XYZ", "contact id " + contact_id + " number " + Numbers);
                    Toast toast = Toast.makeText(Context, name + Numbers, Toast.LENGTH_SHORT);
                    toast.show();

                }

            } else {
                Toast toast = Toast.makeText(a, "Nothing", Toast.LENGTH_SHORT);
                toast.show();
            }
        }
        catch (Exception Ex)
        {
            Log.d(Ex.toString(),"");
        }

    }

});
于 2014-11-14T13:42:00.407 回答