Intereting Posts

Android: как установить значок из базы данных для AlertDialog?

Поэтому я показываю 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 . Как вы это делаете, это зависит от того, как вы храните свой образ.