1

我想在屏幕上创建图标,在 3 天后通过网络搜索并在 IRC 频道中询问并实施这样的示例后,只听它的触摸(而不强制创建无用的通知):

运行在所有其他应用之上的 Android 应用?

创建系统覆盖窗口(始终在顶部)

我发现有一种 hacky 方法可以做到这一点,但没有人知道(智能任务栏开发人员除外)我安装了带有大多数源示例的智能任务栏,发现这个示例在没有通知栏的情况下被杀死,但智能任务栏从未被杀死,(我发现你可以'甚至不使用常规任务杀手杀死它,如 Android 任务管理器),只有一种方法可以杀死这个图标,进入设置>应用程序>选择智能任务栏>强制停止。

我发现的另一件事是它永远不会进入后台并且在android任务管理器中(在实时进程列表中)它被标记为可见并且你不能杀死它有人可以帮助我如何创建一个始终可见的图标并且从未在屏幕上被杀

4

2 回答 2

1

调用setupNotification()你的服务的onCreate方法和clearNotification()你的服务的onDestroy方法。

private int SERVICE_NOTIFICATION = 1; // this should be unique for your app

private void setupNotification()
{
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){
        Notification serviceNotification = new NotificationCompat.Builder(this)
            .setContentTitle("Your Service")
            .setContentText("Your Service is running in the background")
            .setSmallIcon(R.drawable.ic_launcher)
            .setPriority(NotificationCompat.PRIORITY_MIN)
            .setOngoing(true)
            .build();
        startForeground(SERVICE_NOTIFICATION, serviceNotification);
    }
    else{
        Notification serviceNotification = new Notification();
        serviceNotification.flags = Notification.FLAG_ONGOING_EVENT;
        startForeground(SERVICE_NOTIFICATION, serviceNotification);
    }
}

private void clearNotification()
{
    stopForeground(true);
}
于 2014-05-04T11:52:39.240 回答
0

这是绝对可行的。您应该保持始终运行的服务。并在创建该服务时,

@Override
    public void onCreate() {
        super.onCreate();

        customView= new MYCustomView(MyService.this);
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
                PixelFormat.TRANSLUCENT);
        params.gravity = Gravity.RIGHT | Gravity.TOP;
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        wm.addView(customView, params);
    }

这会将您的观点置于所有竞争之上。

于 2014-04-29T07:41:33.703 回答