【发布时间】:2014-03-23 00:56:42
【问题描述】:
我一直在研究如何使用RemoteView 创建自定义布局通知。
到目前为止,我能够创建一个通知,其中 contentView 和 bigContentView 指向带有自定义布局 xml 的 RemoteView。但是,不会发生的情况是在创建此 RemoteView 时启动 Activity(与自定义布局相关联)。
我已经仔细检查并在我的布局 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。我正在寻找的是在自定义布局通知中处理对某些 UI 元素的触摸,而不是在用户单击通知表面的哪个位置时启动 Activity。
例如,如果我在通知使用的RemoteView 中有 3 个图标(即ImageView),我希望能够处理每个图标的触摸。我无法想象这是不可能的,如果不是,那么在通知中添加RemoteView 有什么意义?
【问题讨论】:
-
toolsManifest 中的 XML 属性仅影响工具(即,根据声明的tools:context在 IDE 中查看布局预览时提供正确的主题)。它们在运行时没有影响。 -
感谢您的指出。 XML 是由我的 IDE 自动生成的。
标签: java android notifications android-activity remoteview