アプリケーションのステータスを示すフロート アイコンを表示するサービスがあります。しかし、特定の場合に、サービスを停止してフロート アイコンを非表示にしたいことがあります。だから私はそれを処理するブロードキャストを持っていますが、問題は を呼び出してサービスを停止できないことcontext.stopService(new Intent(context, FloaticonService.class))
です。
これがBroadcastReceiverですFloaticonReceiver.java
public class FloaticonReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.stopService(new Intent(context, FloaticonService.class));
}
}
そして、ここにサービスコードがありますFloaticonService.java
public class FloaticonService extends Service {
private WindowManager windowManager;
private ImageView floatIcon;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
floatIcon = new ImageView(this);
floatIcon.setImageResource(R.drawable.ic_launcher);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 100;
windowManager.addView(floatIcon, params);
}
}