2017-12-23 18 views
2

mipmapを使用する代わりに、外部URLからPNG経由で小さなAndroid通知アイコンを設定する必要があります。Androidの通知の外部URLからのsetSmallIcon

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 

     notificationBuilder.setSmallIcon(R.mipmap.ic_notification); 
     notificationBuilder.setColor(ContextCompat.getColor(getApplicationContext(), android.R.color.transparent)); 

    } 

代わりに使用する外部のPNG画像を渡す必要があります:それは可能であればR.mipmap.ic_notification

は、誰も知っていますか?

+0

私はBuilderで直接その可能性は考えていません。それはリソースの 'id'である' int'引数だけをとります。 – ADM

答えて

3

Notification.Builderに固有の開発者ドキュメントを読むと、setSmallIcon(int icon)は、使用するドロアブルのアプリケーションパッケージにAリソースIDが必要であることがわかります。

イメージをダウンロードし、ビットマップに変換してからsetSmallIcon(int resId)に設定すると、エラーが発生します。あなたは、例えば次のようにDrawableのにビットマップを変換することであったとしても

Drawable d = new BitmapDrawable(getResources(), bmpFinal); 

が、まだそのDrawableのは、アプリケーションパッケージに存在しないため、あなたにエラーを与えるために起こっています。

唯一の可能な解決策は、パッケージに存在するDrawableリソースを使用して、setSmallIcon()メソッドに設定することです。典型的な使用方法:

builder.setSmallIcon(R.drawable.ic_launcher); 

また、にはBitmapインスタンスが必要です。ビットマップを既に持っているので、あなたの現在のコードに何か追加の変更を加えずに、あなたの要件に合ったものをそのまま使用することができます。

もしそうでなければ、既にdrawableフォルダの1つに存在するDrawableリソースを使用する必要があります。