我想从警报管理器类的 onReceive 方法修改 TextView 此类不扩展活动。警报发送一个创建通知的意图,我想这样做,因此单击通知将打开一个文本视图,其中包含我在此 onReceive 方法中获得的特定字符串。
RemoteViews contentView = new RemoteViews(context.getPackageName(),R.layout.notify_layout);
contentView.setTextViewText(R.id.notetext,my_message);
notif.contentView = contentView;
我尝试使用上面带有通知意图的 RemoteView 来执行此操作,但它似乎不起作用。
我知道我无法使用 findViewById 访问它,但我应该在这里采取什么方法?
这是来自处理意图的代码
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.notify_layout);
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE); nm.cancel(getIntent().getExtras().getInt("com.myapp.NotificationDisp"));
然后我在这里有整个通知。我知道它已被弃用,我应该使用构建器,但我需要它与姜饼兼容,而姜饼似乎不是构建器。
Intent i = new Intent("com.MyApp.NotificationDisp");
i.putExtra("com.MyApp.NotificationDisp", 1);
nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
@SuppressWarnings("deprecation")
Notification notif = new Notification(R.drawable.ic_launcher,
"Myapp", System.currentTimeMillis());
//
RemoteViews contentView = new RemoteViews(context.getPackageName(),
R.layout.notify_layout);
contentView.setTextViewText(R.id.notetext,
my_message);
notif.contentView = contentView;
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
i, 0);
notif.contentIntent = contentIntent;
//
notif.setLatestEventInfo(context, "Myapp", my_message, contentIntent);
notif.vibrate = new long[] { 100, 250, 100, 500};
nm.notify(1, notif);
所以这会在我的状态栏中显示一个带有正确文本的通知,但是当我点击它时,它只显示一个空白的文本视图。xml notify_layout 应该设置得很好。