0

複合ボタンまたは QuickContactBadge(QCB) をステータス バー通知に配置する方法を見つけようとしています。リモート ビューを使用してカスタム レイアウトを渡していますが、ImageView、textView などでは問題なく動作しますが、複合ボタン (スイッチなど) を追加しようとしたり、クイック コンタクト バッジやカスタム ビューを使用しようとすると例外が発生します。これはxmlがどのように見えるかです

<QuickContactBadge 
        android:id="@+id/badge"
        android:layout_width="@dimen/avatar_small_size"
        android:layout_height="@dimen/avatar_small_size"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_generic_user_square_small"/>

これが私が通知を投稿しようとしている方法です

Intent notificationIntent;
        PendingIntent contentIntent;
        Notification.Builder builder = new Notification.Builder(this);
        builder.setAutoCancel(false);

        builder.setSmallIcon(R.drawable.icon);
        builder.setTicker("Notification Alert");

        // This is where actual notification is constructed 
        notificationIntent = new Intent (this, MyActivity.class);
        contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        builder.setContentIntent(contentIntent);

        contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
        builder.setContent(contentView);

        mNotificationManager.notify(notification_alert_id, builder.getNotification());  

これは、これを実行しようとしたときに発生する例外です

02-14 20:07:40.014 E/TabletStatusBar( 1212): couldn't inflate view for notification
02-14 20:07:40.014 E/TabletStatusBar( 1212): android.view.InflateException: Binary XML file line #7: Error inflating class android.widget.QuickContactBadge
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.createView(LayoutInflater.java:606)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.parseInclude(LayoutInflater.java:823)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:729)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.widget.RemoteViews.apply(RemoteViews.java:1570)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at com.android.systemui.statusbar.tablet.TabletStatusBar.inflateViews(TabletStatusBar.java:1779)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at com.android.systemui.statusbar.tablet.TabletStatusBar.addNotificationViews(TabletStatusBar.java:1587)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at com.android.systemui.statusbar.tablet.TabletStatusBar.addNotification(TabletStatusBar.java:790)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at com.android.systemui.statusbar.CommandQueue$H.handleMessage(CommandQueue.java:231)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.os.Looper.loop(Looper.java:137)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.app.ActivityThread.main(ActivityThread.java:4340)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at java.lang.reflect.Method.invokeNative(Native Method)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at java.lang.reflect.Method.invoke(Method.java:511)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at dalvik.system.NativeStart.main(Native Method)
02-14 20:07:40.014 E/TabletStatusBar( 1212): Caused by: android.view.InflateException: Binary XML file line #7: Class not allowed to be inflated android.widget.QuickContactBadge
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.failNotAllowed(LayoutInflater.java:618)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    at android.view.LayoutInflater.createView(LayoutInflater.java:558)
02-14 20:07:40.014 E/TabletStatusBar( 1212):    ... 21 more

リモート ビューを使用しているときに、通知で QCB またはカスタム ビューを取得する方法はありますか? どんな助けにも感謝します。

ありがとうございます

4

1 に答える 1

1

複合ボタンまたは QuickContactBadge(QCB) をステータス バー通知に配置する方法を見つけようとしています。

できません。これらのウィジェットはRemoteViews、現在のバージョンの Android では使用できません。

于 2012-02-14T21:09:25.843 に答える