Уведомление Android с RemoteViews - активность, связанная с макетом RemoteViews
Я изучал, как создать пользовательский макет уведомления с помощьюRemoteView
.
Пока я могу создать уведомление сcontentView
а такжеbigContentView
указывая наRemoteView
с пользовательским макетом XML. Однако, что не происходит, это иметьActivity
(связано с пользовательским макетом) началось, когда этоRemoteView
создано.
Я дважды проверил, и в моем макете XML, кажется, правильноActivity
имя класса:
<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:paddingBottom="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
tools:context=".LLMNotificationActivity" >
..... the rest are standard layout items: images, buttons and text
</RelativeLayout>
В файле манифеста, сразу после основного действия основного приложения, также добавляется действие уведомления:
<activity
android:name=".LLMNotificationActivity"
android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Я ожидаю, когда уведомление используетRemoteView
для его содержания, что этоRemoteView
запустит действие, привязанное к определению его макета. Однако, похоже, нет.
Вот как я создаю уведомление в основном приложенииActivity
:
protected void startNoti() {
if( noti!=null ) return;
Context context = getApplicationContext();
RemoteViews contentView = new RemoteViews(context.getPackageName(),R.layout.activity_noti1);
Notification.Builder notibuilder = new Notification.Builder(context);
notibuilder.setContentTitle(" ");
notibuilder.setContentText(" ");
notibuilder.setSmallIcon(R.drawable.ic_launcher);
notibuilder.setOngoing(true);
manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
noti = notibuilder.build();
noti.contentView = contentView;
manager.notify(NOTIFICATION_ID, noti);
}
LLMNotificationActivity
Класс деятельности определяется как обычно:
public class LLMNotificationActivity extends Activity {
.... etc.... constructor, some button on-click handlers, nothing spectacular...
}
Может ли кто-нибудь указать мне, что мне не хватает, или если я неправильно понял, чтоRemoteView
сможет сделать? Я понимаю, чтоRemoteView
должен, после создания, вызывать действие, связанное с его макетом. Или - есть какой-то API, который я пропустил, который явно может установить намерениеRemoteView
?
То, что я нашел до сих пор, это только настройка контентаIntent
который в основном только запускаетActivity
как только пользователь касается уведомления. То, что я ищу, - это обрабатывать прикосновения к некоторым элементам пользовательского интерфейса внутри уведомлений пользовательского макета, а не запускатьActivity
независимо от того, где пользователь нажимает на поверхность уведомлений.
Например, если у меня есть 3 иконки (т.е.ImageView
) вRemoteView
какое уведомление использует, я хотел бы иметь возможность обрабатывать касание каждого из них. Я не могу себе представить, что это было бы невозможно, как будто это не так, какой смысл иметьRemoteView
в уведомлении?