发送推送通知时发生android.app.RemoteServiceException

时间:2014-03-09 16:40:43

标签: android push-notification

我在一些设备上遇到异常,主要是android 4.3 / 4.4(Samsung / Moto G)。但是,当我在我的设备和模拟器上调试它时它工作正常。 以下是例外

android.app.RemoteServiceException:从包com.xxxxx发布错误通知:无法展开RemoteViews:StatusBarNotification

这是我的代码

    mNotificationManager = (NotificationManager)
            this.getSystemService(Context.NOTIFICATION_SERVICE);

    Intent intent = new Intent(this,TipOfWeekActivity.class);
    intent.putExtra(CureMeConstants.MESSAGE, msg);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            intent, 0);

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.store_icon)
    .setContentTitle("Tip of the week")
    .setAutoCancel(true)
    .setContentText(Html.fromHtml(msg , null, new ListTagHandler()));

    Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    mBuilder.setSound(alarmSound);

    mBuilder.setVibrate(null);
    mBuilder.setContentIntent(contentIntent);

    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

以下是我的布局如何

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".TipOfWeekActivity" >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:scrollbars="none|vertical"
        android:layout_above="@id/ad"
        android:layout_alignParentTop="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="10dp" >

            <ImageView
                android:id="@+id/icon"
                android:layout_width="fill_parent"
                android:layout_height="100dp"
                android:contentDescription="@id/title"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:src="@drawable/tip_of_week" />

            <TextView
                android:id="@+id/message"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:paddingBottom="10dp"
                android:paddingTop="10dp"
                android:textAlignment="gravity"
                android:textSize="14sp"
                android:linksClickable="true" />

            <Button
                android:id="@+id/btnHome"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"
                android:linksClickable="true"
                android:onClick="goBackHome"
                android:text="@string/goBackHome"
                android:textColor="#0000FF" />

        </LinearLayout>
    </ScrollView>
</RelativeLayout>

有人可以建议我可能出现什么问题吗?这是特定于Android版本的吗?任何帮助将不胜感激。

更新

进一步调查后,我在模拟器上发现以下异常

无法通知视图通知

“段落范围必须从段落边界开始”

但是在我的代码中,我已经处理了一个段落,ul和li标签。

private void handleListTag(Editable output) {
        if (m_parents.lastElement().equals("ul")) {
            output.append("\n");
            String[] split = output.toString().split("\n");

            int lastIndex = split.length - 1;
            int start = output.length() - split[lastIndex].length() - 1;
            output.setSpan(new BulletSpan(15 * m_parents.size()), start,
                    output.length(), 0);
        } else if (m_parents.lastElement().equals("ol")) {
            m_index++;

            output.append("\n");
            String[] split = output.toString().split("\n");

            int lastIndex = split.length - 1;
            int start = output.length() - split[lastIndex].length() - 1;
            output.insert(start, m_index + ". ");
            output.setSpan(
            new LeadingMarginSpan.Standard(15 * m_parents.size()),
                    start, output.length(), 0);
        }

    }

此代码也适用于版本4.1.2的Android设备。有人知道android 4.3 / 4.4中处理列表标签的异常吗?

1 个答案:

答案 0 :(得分:0)

请注意,上述功能不会在所有设备上引发异常。

在调试代码时,我发现了以下事项。

当要在通知窗口中显示的消息包含 ul li 等标记时,远程视图未被扩展。当NotificationBuilder中的TextView遇到此类标记时,它无法展开视图并抛出异常即使使用TagHandler正确处理标签。简单的解决方案是从通知Windows显示中删除此类标记。