`

phone调用紧急电话

 
阅读更多

调用紧急电话,

解决紧急电话界面 按home键,回到锁屏界面的

 Button bt1 = (Button) findViewById(R.id.bt1);
        bt1.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Log.d("test", "___" + isTopActivy());
				ComponentName comp = new ComponentName("com.android.phone",
                "com.android.phone.EmergencyDialer");
					Intent intentM = new Intent();
					intentM.setComponent(comp);
					startActivity(intentM);

				Intent intent = new Intent();
				intent.setClass(PhoneDemoActivity.this, PhoneService.class);
				intent.setAction(PhoneService.LOCK);
				startService(intent);
			}
		});
        Button bt2 = (Button) findViewById(R.id.bt2);
        bt2.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent();
				intent.setClass(PhoneDemoActivity.this, PhoneService.class);
				intent.setAction(PhoneService.CANCEL_LOCK);
				startService(intent);
			}
		});

 问题。

 

得到栈顶的activity :使用SingleTask加载模式:

 public String isTopActivy(){
        ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
        List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1);
        String cmpNameTemp = null;

        if(null != runningTaskInfos){
                cmpNameTemp = (runningTaskInfos.get(0).topActivity).toString();
                Log.e("cmpname","cmpname:"+cmpNameTemp);
        }

       return cmpNameTemp;
}

 

service每隔500毫秒启动服务检测:

 

public static final String LOCK = "SET_LOCK" ;
	public static final String CANCEL_LOCK = "CANCEL_LOCK" ;
	
	@Override
	public IBinder onBind(Intent arg0) {
		return null;
	}

	@Override
	public void onCreate() {
		super.onCreate();
	}

	@Override
	public void onDestroy() {
		super.onDestroy();
	}

	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		if(intent != null){
			String action = intent.getAction();
			Log.d("test", "action_" + action);
			if(action.equals(LOCK)){
				setAlarm();
				String phoneEm = isTopActivy();
				String pStr = "ComponentInfo{com.android.phone/com.android.phone.EmergencyDialer}" ;
				String lStr = "ComponentInfo{com.phone/com.phone.PhoneDemoActivity}" ;
				String launch2 = "ComponentInfo{com.android.launcher/com.android.launcher2.Launcher}" ;
//				if(phoneEm.equals(launch2)){
				if(phoneEm.equals(pStr) || phoneEm.equals(lStr)){
				
				}else {
					Intent intent2 = new Intent();
					intent2.setClass(this, PhoneDemoActivity.class);
					intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
					startActivity(intent2);
					
				}
				Log.d("test", "!phoneEm.equals(phoneEm)_" + !phoneEm.equals(phoneEm));
				Log.d("test", "!phoneEm.equals(lStr)_" + !phoneEm.equals(lStr));
				Log.d("test", "phoneEm_" + phoneEm);
			}else if(action.equals(CANCEL_LOCK)){
				cancelAlarm();
			}
		}
	}
	private int i = 0;
	private int j = 0;
	
	private void setAlarm(){
		Log.d("test", "setAlarm_" + i++);
		Intent i = new Intent();
		i.setClass(this, PhoneService.class);
		i.setAction(LOCK);
		PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
		AlarmManager alarmMgr = (AlarmManager)getSystemService(ALARM_SERVICE);
		alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + 500,500, pi);
	}
	
	private void cancelAlarm(){
		Log.d("test", "cancelAlarm_" + j++);
		Intent i = new Intent();
		i.setClass(this, PhoneService.class);
		i.setAction(LOCK);
		PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
		AlarmManager alarmMgr = (AlarmManager)getSystemService(ALARM_SERVICE);
		alarmMgr.cancel(pi);
	}
	
	/***/
	public String isTopActivy(){
	        ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
	        List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1);
	        String cmpNameTemp = null;

	        if(null != runningTaskInfos){
	                cmpNameTemp = (runningTaskInfos.get(0).topActivity).toString();
//	                Log.e("cmpname","cmpname:"+cmpNameTemp);
	        }

	       return cmpNameTemp;
	}

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics