Поэтому я показываю AlertDialog примерно так:
new AlertDialog.Builder(context) .setMessage(message) .setTitle(title) .setCancelable(true) .setIcon(R.drawable.ic_launcher) // set icon // more code
Можно ли использовать setIcon
чтобы иметь значок из db, например, контактную фотографию:
DatabaseHelper db = new DatabaseHelper(context); Cursor csr = db.getSpecialContact(number); csr.moveToFirst(); String photo = csr.getString(csr.getColumnIndexOrThrow("photo_url")); Uri photo_url = Uri.parse(photo);
Я хочу, чтобы иметь возможность использовать photo_url
(сохраненный в db like content://com.android.contacts/data/1
) с помощью setIcon
но, конечно же, он ожидает, что параметр будет не string
или Uri
. Может ли это быть достигнуто, пожалуйста?
Вот как это сделать:
Drawable drawable = null; try { DatabaseHelper db = new DatabaseHelper(context); Cursor csr = db.getSpecialContact(number); csr.moveToFirst(); String photo = csr .getString(csr.getColumnIndexOrThrow("photo_url")); Uri photo_url = Uri.parse(photo); Bitmap tempBitmap; tempBitmap = BitmapFactory.decodeStream(context .getContentResolver().openInputStream(photo_url)); // Convert bitmap to drawable drawable = new BitmapDrawable(context.getResources(), tempBitmap); } catch (FileNotFoundException e) { Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher); drawable = new BitmapDrawable(context.getResources(), bm); } new AlertDialog.Builder(context) .setMessage(message) .setTitle(title) .setCancelable(true) .setIcon(drawable)
Например, вы можете использовать BitmapDrawable
или любой другой подкласс Drawable
.
BitmapDrawable drawable = new BitmapDrawable(bitmap); AlertDialog.Builder builder = new AlertDialog.Builder(context) .setMessage(message) .setTitle(title) .setCancelable(true) .setIcon(drawable);
Вы можете также предоставить BitmapDrawable
с помощью InputStream
в конструкторе. Но сначала вам нужно создать экземпляр Bitmap
или InputStream
. Как вы это делаете, это зависит от того, как вы храните свой образ.