1

アプリケーションのステータスを示すフロート アイコンを表示するサービスがあります。しかし、特定の場合に、サービスを停止してフロート アイコンを非表示にしたいことがあります。だから私はそれを処理するブロードキャストを持っていますが、問題は を呼び出してサービスを停止できないこと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);

    }

}
4

2 に答える 2

1

これを試して

FloaticonServiceこれをクラスに追加します。

@Override
public void onDestroy() {
    super.onDestroy();
    windowManager.removeView(floatIcon);

}

それが役に立てば幸い。

于 2013-10-16T08:50:13.220 に答える
0

私はこのようにそれを使用し、その作業:

public class OnBootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        final Intent mOnBootServiceIntent = new Intent(context, OnBootService.class);

        context.startService(OnBootServiceIntent);
     //or                        
        context.stopService(OnBootServiceIntent);

        Toast.makeText(context, "is active!", Toast.LENGTH_SHORT).show();
    }   
}
于 2013-10-16T09:10:38.283 に答える