Получить контактное фото в андроиде дает ноль

Я хочу получить фотографию контакта, пока пользователь вводит номер. По номеру телефона я получаю имя пользователя, но для изображения оно показывает ноль.

мой код следующий:

public class NewtempActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final ImageView img = (ImageView) findViewById(R.id.imageView1);
        final EditText edit = (EditText) findViewById(R.id.editText1);
        TextView txt = (TextView) findViewById(R.id.textView1);
        Button btn = (Button) findViewById(R.id.button1);

        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("Girish", "Clicked");

                String name = getContactNameFromNumber(edit.getText()
                        .toString(), getApplicationContext());
                img.setImageBitmap(BitmapFactory
                        .decodeFile(ContactsContract.PhoneLookup._ID));
                Log.d("Girish",
                        ""
                                + (BitmapFactory
                                        .decodeFile(ContactsContract.PhoneLookup._ID)));
                Toast.makeText(getApplicationContext(), name, name.length())
                        .show();
            }
        });
    }

    public String getContactNameFromNumber(String number, Context ctx) {
        /*
         * // define the columns I want the query to return String[] projection
         * = new String[] { ContactsContract.PhoneLookup.DISPLAY_NAME,
         * ContactsContract.PhoneLookup.NUMBER, };
         */
        // encode the phone number and build the filter URI
        Uri contactUri = Uri.withAppendedPath(
                ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
                Uri.encode(number));

        // query time
        // Cursor c = ctx.getContentResolver().query( contactUri, projection,
        // null,
        Cursor c = ctx.getContentResolver().query(contactUri, null, null, null,
                null);

        // if the query returns 1 or more results
        // return the first result
        if (c.moveToFirst()) {
            String name = c.getString(c
                    .getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));

            return name;
        }

        // return the original number if no match was found
        return number;
    }

    public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
        Uri uri = ContentUris.withAppendedId(
                ContactsContract.Contacts.CONTENT_URI, id);
        InputStream input = ContactsContract.Contacts
                .openContactPhotoInputStream(cr, uri);
        // InputStream input = ContactsContract.Contacts.Photo
        if (input == null) {
            return null;
        }
        return BitmapFactory.decodeStream(input);
    }

    public InputStream openPhoto(long contactId) {
        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI,
                contactId);
        Uri photoUri = Uri.withAppendedPath(contactUri,
                Contacts.Photo.CONTENT_DIRECTORY);
        Cursor cursor = getContentResolver().query(photoUri, null, null, null,
                null);
        if (cursor == null) {
            return null;
        }
        try {
            if (cursor.moveToFirst()) {
                byte[] data = cursor.getBlob(0);
                if (data != null) {
                    return new ByteArrayInputStream(data);
                }
            }
        } finally {
            cursor.close();
        }
        return null;
    }

}

Пожалуйста, предложите мне, где я делаю неправильно. Я добавил разрешение на чтение контакта также

Ответы на вопрос(1)

Ваш ответ на вопрос