此问题之前已被提出,但没有一个答案帮助我发布我的案例。
我正在尝试使用布局文件构建自定义通知。但是我收到以下错误:
android.app.RemoteServiceException:发布错误通知 com.eswaraj.app.eswaraj包:无法扩展RemoteViews: StatusBarNotification(pkg = com.eswaraj.app.eswaraj user = UserHandle {0} id = 8888 tag = null score = 0:通知(pri = 0 contentView = com.eswaraj.app.eswaraj / 0x7f030052 vibrate = null sound = null defaults = 0x0 flags = 0x0 kind = [null]))
我的布局文件是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="left">
<com.makeramen.RoundedImageView
android:id="@+id/nImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/profile_image"
android:padding="15dp"
android:scaleType="fitCenter"
app:riv_corner_radius="30dip"
app:riv_border_width="2dip"
app:riv_border_color="#333333"
app:riv_mutate_background="true"
app:riv_oval="true"/>
<TextView
android:id="@+id/nTitle"
android:text="eSwaraj: Your voice is heard"
android:layout_toRightOf="@+id/nImage"
android:paddingTop="12dp"
android:textSize="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/nMessage"
android:layout_below="@+id/nTitle"
android:layout_toRightOf="@+id/nImage"
android:text="Your comaplaint viewed"
android:textSize="15dp"
android:paddingTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/nTime"
android:layout_toRightOf="@+id/nImage"
android:layout_below="@+id/nMessage"
android:textSize="13dp"
android:paddingTop="5dp"
android:text="12:23PM"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
我发送通知如下:
public void sendNotification(Context caller, Class<?> activityToLaunch, Bitmap icon, GcmMessageDto gcmMessageDto, int id) {
Intent toLaunch;
RemoteViews remoteViews = new RemoteViews(caller.getPackageName(), R.layout.notification);
if(activityToLaunch != null) {
toLaunch = new Intent(caller, activityToLaunch);
}
else {
toLaunch = new Intent();
}
PendingIntent intentBack = PendingIntent.getActivity(caller, 0, toLaunch, 0);
NotificationManager notifier = (NotificationManager) caller.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(caller)
.setSmallIcon(android.R.drawable.ic_notification_overlay)
.setContentIntent(intentBack);
remoteViews.setTextViewText(R.id.nMessage, gcmMessageDto.getMessage());
remoteViews.setTextViewText(R.id.nTime, new Date().toString());
if(icon != null) {
remoteViews.setImageViewBitmap(R.id.nImage, icon);
}
mBuilder.setContent(remoteViews);
notifier.notify(id, mBuilder.build());
}
任何帮助都将不胜感激。
答案 0 :(得分:18)
不久,
com.makeramen.RoundedImageView
正在弄乱你的工作。
并非所有视图都可以在用于构建自定义通知的RemoteView中使用。根据{{3}},只有以下内容可用于创建RemoteViews:
因此,您必须为修改后的ImageView类找到解决方法,并使用纯ImageView。
答案 1 :(得分:0)
我也有同样的问题,我使用自定义TextView,求助于库存TextView解决了我的问题。
答案 2 :(得分:0)
我遇到了同样的问题。根据接受的答案,可以在通知中使用特定的控件。我的布局中有一个视图,如下所示。
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.04"/>
这是导致崩溃的原因。我将其删除,效果很好。希望对别人有帮助。
答案 3 :(得分:0)
在使用约束布局时,我遇到了同样的问题,然后我按照文档https://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout更改为线性布局,就可以了。