2012-01-11 14 views

Trả lời

4

Có thể làm điều gì đó như vậy không?

Chỉ khi hoạt động của bạn ở mặt trước, trong trường hợp này bạn có thể theo dõi các sự kiện chạm. Bạn không thể tìm hiểu về các sự kiện liên lạc xảy ra ở nơi khác trong hệ thống.

+0

Tôi tìm thấy giải pháp này: http://stackoverflow.com/questions/4481226/creating-a-system-overlay-always-on-top-button-in-android và có vẻ như nó hoạt động. Tôi nghĩ nó không phải là tốt nhất, bạn nghĩ sao? – Gabrielle

+0

@Gabrielle: Điều đó sẽ không hoạt động trên các thiết bị mới hơn. Để ngăn chặn các cuộc tấn công tapjacking, hoặc * bạn * có thể nhận được các sự kiện cảm ứng (và các ứng dụng cơ bản sẽ không), hoặc * họ * có thể nhận được các sự kiện liên lạc (và bạn không thể). – CommonsWare

+0

Bạn nói đúng, tôi đã thử nghiệm trên một thiết bị mới hơn và nó không hoạt động. Cảm ơn bạn! – Gabrielle

7

ACTION_USER_PRESENT là một hành động quảng bá, vì vậy bạn sẽ có thể viết bộ thu phát để phản hồi và khởi chạy ứng dụng của bạn. Lưu ý rằng ACTION_USER_PRESENT

được gửi khi người dùng có mặt sau khi thiết bị khởi động (ví dụ: khi khóa bảo vệ không còn).

Tôi cũng chỉ gặp một số example trong đó hành động phát sóng BOOT_COMPLETED được người phát sóng sử dụng để khởi động ứng dụng khi khởi động.

1

Theo vòng đời của android nếu người dùng nhấn nút home hoặc bàn phím bị khóa onPause sẽ được gọi. Làm như thế này.

@Override 
public void onPause() 
{ 
super.onPause(); 
Timer timer = new Timer(); 
TimerTask task = new TimerTask() { 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     finish(); 
    } 
}; 
timer.schedule(task, 60000); 
} 

và nếu người dùng đến trước 60 giây sau đó trong onRestart().

@Override 
public void onRestart() 
{ 
super.onRestart(); 
timer.cancel(); 
timer.purge(); 
}