我想在屏幕上创建图标,只听触摸它(不强制创建无用的通知(3天后,通过网络搜索并在IRC频道中询问并实现必须这样的示例:
运行在所有其他应用程序之上的Android应用程序?
创建系统覆盖窗口(始终位于顶部(
我发现有一种黑客方法可以做到这一点,但没有人知道(除了智能任务栏开发人员(我安装了大多数源示例的智能任务栏,发现这个示例在没有通知栏的情况下被杀,但智能任务栏从未杀死,(我发现你甚至不能用常规任务杀手杀死它,比如 Android 任务管理器(,只有一种方法可以杀死这个图标,转到设置>应用程序>选择智能任务栏>强制停止。
我发现的另一件事是它永远不会进入后台,并且在Android任务管理器(实时进程列表中(中,它被标记为可见,您无法杀死它有人可以帮我如何创建一个始终可见且永远不会在屏幕上杀死的图标
服务的onCreate
方法中调用setupNotification()
,在服务的onDestroy
方法中调用clearNotification()
。
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);
}
这是绝对可行的。您应该保持始终运行的服务。并在创建该服务时,
@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);
}
这会将您的观点置于所有 vie 之上。