状态栏通知的Android远程服务异常

时间:2017-04-19 10:39:41

标签: android android-notifications android-notification-bar android-remoteview

我使用RemoteViews进行本地通知。我无法解决这个问题,因为我的代码没有出现错误

Please click for device android version

例外细节;

java.lang.Exception: android.app.RemoteServiceException: Bad notification posted from package com.package.name: Couldn't expand RemoteViews for: StatusBarNotification(pkg=com.package.name user=UserHandle{0} id=2010 tag=null score=10: Notification(pri=1 contentView=com.package.name/0x1090064 vibrate=[0] sound=content://settings/system/notification_sound defaults=0x0 flags=0x10 kind=[null]))
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5095)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
    at dalvik.system.NativeStart.main(Native Method)

        at com.package.name.activity.CustomErrorActivity.onCreate(CustomErrorActivity.java:30)
        at android.app.Activity.performCreate(Activity.java:5237)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2151)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236)
        at android.app.ActivityThread.access$800(ActivityThread.java:138)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5095)
        at java.lang.reflect.Method.invokeNative(Method.java:-2)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
        at dalvik.system.NativeStart.main(NativeStart.java:-2)

我的RemoteViews XML;

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/status_bar_latest_event_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:paddingTop="3dp">

<ImageView
    android:id="@+id/big_picture"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="78dp"
    android:foregroundGravity="bottom"
    android:scaleType="fitCenter"
    android:src="@drawable/prayer_times_notf_1" />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/big_icon"
        android:layout_width="95dp"
        android:layout_height="95dp"
        android:paddingLeft="3dp"
        android:scaleType="fitCenter"
        android:src="@drawable/app_logo" />

    <LinearLayout
        android:id="@+id/titleContainer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:gravity="center_vertical"
        android:orientation="vertical">

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:singleLine="true"
            android:textColor="@color/black"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/app_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:singleLine="true"
            android:text="@string/app_name"
            android:textColor="#999999"
            android:textSize="16sp" />

    </LinearLayout>

</LinearLayout>

<LinearLayout
    android:id="@+id/buttonContainer"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/big_picture"
    android:layout_marginTop="-55dp"
    android:background="#D9FFFFFF"
    android:orientation="horizontal"
    android:weightSum="2">

    <RelativeLayout
        android:id="@+id/remoteview_setting_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:visibility="visible">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:gravity="center_horizontal"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="center_vertical"
                android:src="@drawable/settings"
                android:tint="@color/colorPrimaryDark" />

            <TextView
                android:id="@+id/remote_setting_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="5dp"
                android:text="@string/settings"
                android:textColor="@color/colorPrimaryDark" />

        </LinearLayout>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/remoteview_mute_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:visibility="gone">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="center_vertical"
                android:src="@drawable/ic_volume_off_black_24dp"
                android:tint="@color/colorPrimaryDark" />

            <TextView
                android:id="@+id/remote_mute_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="@string/alarm_mute"
                android:textColor="@color/colorPrimaryDark" />

        </LinearLayout>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/remoteview_reminder_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:visibility="gone">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="center_vertical"
                android:src="@drawable/ten_minute_later"
                android:tint="@color/colorPrimaryDark" />

            <TextView
                android:id="@+id/remote_ten_min_later"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="@string/alarm_dialog_snooze"
                android:textColor="@color/colorPrimaryDark" />

        </LinearLayout>

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/remoteview_share_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:visibility="gone">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@drawable/ic_share"
                android:tint="@color/colorPrimaryDark" />

            <TextView
                android:id="@+id/remote_view_share"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="@string/share"
                android:textColor="@color/colorPrimaryDark" />

        </LinearLayout>

    </RelativeLayout>

</LinearLayout>

和Java;

RemoteViews remoteViews = remoteView(_mContext.getResources().getString(R.string.app_opened_notf_title), R.drawable.notf_wallpaper, false);
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
            notification.bigContentView = remoteViews;


private RemoteViews remoteView(String title, int imageResource, boolean hideButtons) {
    RemoteViews remoteViews = new RemoteViews(_mContext.getPackageName(), R.layout.view_big_notification_picture);
    remoteViews.setImageViewBitmap(R.id.big_picture, BitmapFactory.decodeResource(_mContext.getResources(), imageResource));
    remoteViews.setTextViewText(R.id.title, title);
    remoteViews.setTextViewText(R.id.remote_setting_btn, _mContext.getString(R.string.settings));
    remoteViews.setTextViewText(R.id.remote_mute_btn, _mContext.getString(R.string.alarm_mute));
    remoteViews.setTextViewText(R.id.remote_ten_min_later, _mContext.getString(R.string.alarm_dialog_snooze));
    remoteViews.setTextViewText(R.id.remote_view_share, _mContext.getString(R.string.share));
    remoteViews.setViewVisibility(R.id.buttonContainer, (hideButtons) ? View.VISIBLE : View.GONE);
    return remoteViews;
}

我该如何解决这个问题?

0 个答案:

没有答案