android开发设置应用开机自启动(2)——并使应用实时保持在前台

对于开机自启动已经在上一篇文章中讲过了;对于使自己的应用实时保持在前台,主要就是开启一个线程实时监听处于前台的应用,如果不是自己的应用则把自己的应用放到前台来;
package com.example.alwaysfront;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BooTBroadcastReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
			Intent newIntent = new Intent(context,OneMainActivity.class);
			newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			context.startActivity(newIntent);
		}

	}

}


package com.example.alwaysfront;

import java.util.List;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class OneMainActivity extends Activity {
	
	private EditText et;
	
	private Button bt;
	
	private Button bt1;
	
	private Handler handler;
	
	public static boolean flag = true;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_one_main);
		
		et = (EditText) findViewById(R.id.et);
		bt = (Button) findViewById(R.id.bt);
		bt1 = (Button) findViewById(R.id.bt1);
		
		bt.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				if(UtilPhone.isEmail(et.getText().toString().trim())) {
					Toast.makeText(OneMainActivity.this, "正确", Toast.LENGTH_SHORT).show();
				}else {
					Toast.makeText(OneMainActivity.this, "错误", Toast.LENGTH_SHORT).show();
				}
			}
		});

		bt1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				flag = false;
			}
		});
		
		handler = new MyHandler();
		Thread t = new Mythread();
		t.start();

	}

	class MyHandler extends Handler {
		@Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			
			if(msg.what == 1) {
				ActivityManager am = (ActivityManager) OneMainActivity.this.getSystemService(Context.ACTIVITY_SERVICE);
				@SuppressWarnings("deprecation")
				List tasks = am.getRunningTasks(1);
				if(!tasks.isEmpty()) {
					ComponentName topActivity = tasks.get(0).topActivity;
					if(!topActivity.getPackageName().equals(OneMainActivity.this.getPackageName())) {
						AppRunningINFront(OneMainActivity.this.getPackageName());
					}
				}
			}
			
		}
	}

	class Mythread extends Thread {
		@Override
		public void run() {
			super.run();
			while(flag) {
				try {
					Thread.sleep(500);
					Message msg = handler.obtainMessage();
					msg.what = 1;
					handler.sendMessage(msg);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				
			}
			
		}
	}
	
	private void AppRunningINFront(String packageName) {  
        PackageInfo pckageInfo;  
        try {  
        	pckageInfo = getPackageManager().getPackageInfo(packageName, 0);  
            Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);  
            resolveIntent.setPackage(pckageInfo.packageName);  
            PackageManager manager = getPackageManager();  
            List info = manager.queryIntentActivities(resolveIntent, 0);  
            ResolveInfo ri = info.iterator().next();  
            if (ri != null) {  
                packageName = ri.activityInfo.packageName;  
                String className = ri.activityInfo.name;  
                Intent intent = new Intent(Intent.ACTION_MAIN);  
                ComponentName cn = new ComponentName(packageName, className);  
                intent.setComponent(cn);  
                startActivity(intent);  
            }  
        } catch (NameNotFoundException e) {  
            e.printStackTrace();  
        }  
  
    }
	
}





    

    
    
    
    
        
            
                

                
            
        
        
          
      
          
  
          
      

        
    






你可能感兴趣的:(android笔记)