如何在服务中使用自定义通知?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (62)

我尝试在服务中构建带有定制视图(远程视图)的通知。我必须在通知中点击3张图片。

我自定义布局只有3个图像视图和我托盘上的点击事件服务,但无法实现

我尝试了许多解决方案,但都没有成功。

我的manifest:

<service android:name=".services.Service1"></service>
    <receiver android:name=".adapters.AlarmReceiver" />
    <receiver android:name=".services.SSSReceiver" android:enabled="true" android:process=":remote" />
    <receiver android:name=".services.Service1$notify_receiver" android:exported="false">
        <intent-filter>
            <action android:name="cn_wv" />
            <action android:name="cn_exit" />
            <action android:name="cn_logo" />
        </intent-filter>
    </receiver>

我的服务类:

public class Ogame1 extends Service {

Context ctx;

protected PendingIntent getPendingSelfIntent(Context context, String action) {
    Intent intent = new Intent(context, getClass());
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    return PendingIntent.getBroadcast(context, 0, intent, 0);
}

public class notify_receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Log.e("notify_receiver","onReceive");
    }
}

@Override
public void onCreate() {
    ctx = getApplicationContext();
    RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.ly_customnotify);
    contentView.setOnClickPendingIntent(R.id.cn_wv, getPendingSelfIntent(ctx, "cn_wv"));
    contentView.setOnClickPendingIntent(R.id.cn_exit, getPendingSelfIntent(ctx, "cn_exit"));
    contentView.setOnClickPendingIntent(R.id.customnotify_logo, getPendingSelfIntent(ctx, "cn_logo"));



    Notification myNotify  = new Notification.Builder(ctx)
            .setSmallIcon(R.drawable.logo)
            .setContent(contentView)
            .setOngoing(true)
            .setPriority(Notification.PRIORITY_MAX).build();
    NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(1, myNotify);
}

还有我的定制版面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:padding="10dp">

<ImageView
    android:id="@+id/customnotify_logo"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_marginRight="10dp"
    android:layout_weight=".60"
    android:contentDescription="@string/app_name"
    android:scaleType="fitCenter"
    android:src="@drawable/logo" />

<ImageView
    android:id="@+id/cn_wv"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_marginRight="10dp"
    android:layout_weight=".20"
    android:contentDescription="@string/app_name"
    android:scaleType="fitCenter"
    android:src="@android:drawable/button_onoff_indicator_on" />
<ImageView

    android:id="@+id/cn_exit"
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_marginRight="10dp"
    android:layout_weight=".20"
    android:contentDescription="@string/app_name"
    android:scaleType="fitCenter"
    android:src="@android:drawable/ic_lock_power_off" />
</LinearLayout>
提问于
用户回答回答于

在getPendingSelfIntent()中,getclass()是Ogame1.class,要触发接收器,需要notify_receiver.class。此外,你也不需要manifest中的操作,因为你的待定意图是明确的。

所属标签

可能回答问题的人

  • uncle_light

    5 粉丝518 提问8 回答
  • 嗨喽你好

    7 粉丝480 提问8 回答
  • 人生的旅途

    10 粉丝484 提问7 回答
  • 无聊至极

    4 粉丝504 提问6 回答

扫码关注云+社区

领取腾讯云代金券