状态栏面板中的Android通知工具栏?

时间:2016-04-29 13:06:12

标签: java android android-studio android-notifications android-statusbar

我想知道如何在任何Android设备的Android状态栏中实现固定工具栏。 我说的是下面显示的通知中的按钮。下面提供了一个示例。即使用户没有打开应用程序,它是否可以运行?

有人能指出我正确的方向吗?是否有库或者我们可以使用提供的本机android库实现它吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

举个简单示例,以下代码将在启动时发出正在进行的NotificationButton启动您的应用。

首先,在您的清单中,请求获得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中的ImageViewButton

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> 将不会播放广播。