[英]Android Notification Toolbar in the Status bar panel?
作为一个简单的例子,下面的代码将在启动时发出一个带有Button
的持续Notification
来启动你的应用程序。
首先,在您的清单中,请求获得BOOT_COMPLETED
广播的权限,并注册一个接收器来处理它。
<manifest ...>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
<application ...>
...
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
BootReceiver
简单地使用在MainActivity
定义的static
方法发出Notification
。
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MainActivity.setNotification(context, true);
}
}
setNotification()
方法使用下面的简单布局为Notification
创建一个RemoteViews
实例,并在Button
上设置一个PendingIntent
,并为您的应用程序启动Intent
。
public static void setNotification(Context context, boolean enabled) {
NotificationManager manager =
(NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
if (enabled) {
final RemoteViews rViews = new RemoteViews(context.getPackageName(),
R.layout.notification);
final Intent intent = context.getPackageManager()
.getLaunchIntentForPackage(context.getPackageName());
if (intent != null) {
PendingIntent pi = PendingIntent.getActivity(context,
0,
intent,
0);
rViews.setOnClickPendingIntent(R.id.notification_button_1, pi);
}
Notification.Builder builder = new Notification.Builder(context);
builder.setContent(rViews)
.setSmallIcon(R.drawable.ic_launcher)
.setWhen(0)
.setOngoing(true);
manager.notify(0, builder.build());
}
else {
manager.cancel(0);
}
}
Notification
的布局只是一个ImageView
和一个水平LinearLayout
的Button
。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView android:id="@+id/notification_image"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="10dp"
android:src="@drawable/ic_launcher" />
<Button android:id="@+id/notification_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Button" />
</LinearLayout>
请注意,从 API 3.1 开始,您必须在安装后至少启动一次您的应用程序才能使其脱离停止状态。 在此之前, BootReceiver
将不会传送广播。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.