• Android ActivityManager与WindowManager


        <uses-permission android:name="android.permission.GET_TASKS" />
        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 使用SYSTEM_ALERT_WINDOW时必须要加 -->
     
    import android.app.Activity;
    import android.app.ActivityManager;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Color;
    import android.graphics.PixelFormat;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.view.ViewGroup.LayoutParams;
    import android.view.WindowManager;
    import android.widget.TextView;
    public class MainActivity extends Activity {
        private ActivityManager mActivityManager;
    
        private Handler popupHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                case 0:
                    String packageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
                    Log.e("log", packageName + System.currentTimeMillis());
                    if (packageName.equals("com.some.app.name")) {
                        popupHandler.sendEmptyMessage(1);
                    }
                    if (isRunning) {
                        popupHandler.sendEmptyMessageDelayed(0, 3500);
                    }
                    break;
                case 1:
                    Log.e("log", "mWindowManager");
    
                    if (!isAdd) {
                        startActivity(new Intent(MainActivity.this, MainActivity.class));
                        mWindowManager.addView(mTrackingText, lp);
                        isAdd = true;
                    }
                    break;
                }
            }
        };
        WindowManager mWindowManager;
        private boolean isRunning = true;
        WindowManager.LayoutParams lp;
        TextView mTrackingText;
        boolean isAdd;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
            mTrackingText = new TextView(MainActivity.this);
            mTrackingText.setTextColor(Color.BLUE);
            mTrackingText.setTextSize(55);
            mTrackingText.setText("00:00");
            lp = new WindowManager.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_APPLICATION,
                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                    PixelFormat.TRANSLUCENT);
            isRunning = true;
            popupHandler.sendEmptyMessageDelayed(0, 3500);
        }
    }
    
    
    
    
    
  • 相关阅读:
    调试一个 Bus error 错误
    推荐10个我在用的Chrome浏览器插件
    六个让你的Ubuntu系统提速的方法
    6个可以隐藏运行bat,浏览器等程序的方法
    Windows下5个简单快速加密文件的方法
    如何获取与安装你需要的android 应用
    一款免费的.NET智能持续测试运行工具——MightyMoose
    给 mysql 系统表加上 trigger
    2011百度数据挖掘研发工程师实习生笔试面试题
    Linux常用操作命令整理
  • 原文地址:https://www.cnblogs.com/niray/p/4737290.html
Copyright © 2020-2023  润新知