我想知道如何在任何Android设备的Android状态栏中实现固定工具栏。 我说的是下面显示的通知中的按钮。下面提供了一个示例。即使用户没有打开应用程序,它是否可以运行?
有人能指出我正确的方向吗?是否有库或者我们可以使用提供的本机android库实现它吗?
答案 0 :(得分:1)
举个简单示例,以下代码将在启动时发出正在进行的Notification
并Button
启动您的应用。
首先,在您的清单中,请求获得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
只使用Notification
方法发布static
,该方法在MainActivity
中为此示例定义。
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MainActivity.setNotification(context, true);
}
}
setNotification()
方法使用下面的简单布局为RemoteViews
创建Notification
个实例,并使用launch {在PendingIntent
上设置Button
{ {1}}适用于您的应用。
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
和Button
。
LinearLayout
请注意,自API 3.1起,您必须在安装后至少启动一次应用程序才能使其退出已停止状态。在此之前,<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>
将不会播放广播。