2011-07-20 45 views
13

Tôi đã tự hỏi liệu có cách nào để phát hiện thông qua phương thức gọi lại "onXXXXX" hoặc nhận được phát sóng không nếu một số quy trình khác sắp chụp màn hình hiển thị ứng dụng của tôi. Ví dụ: nếu các công cụ SDK hoặc một số ứng dụng chụp màn hình khác thực hiện "Chụp màn hình", tôi muốn được thông báo và sau đó quyết định xem có nên cho phép hoặc không cho phép chụp màn hình hay không.ngăn chặn chụp màn hình trong các ứng dụng Android

Nếu điều này là không thể, có cách nào để khóa màn hình để không quá trình nào khác có thể chụp màn hình hiển thị của tôi không?

Trả lời

5

no supported method để chụp ảnh màn hình của một ứng dụng khác trên Android. Những cách duy nhất liên quan đến việc khởi động hoặc sử dụng SDK, cả hai đều cung cấp ít hoặc không có khả năng bạn chặn hoặc nhận thông báo về nó. Nếu một ứng dụng khác có ảnh chụp màn hình của bạn, ứng dụng đó theo mặc định sử dụng các phương pháp không được hỗ trợ và có thể làm như vậy.

Tôi muốn làm rõ rằng tôi không ngụ ý bạn không nên sử dụng bất kỳ phương pháp nào có sẵn để bảo mật ứng dụng của bạn. Tôi chỉ cho bạn biết rằng có thể không làm như vậy mà không sử dụng các phương pháp không được hỗ trợ và thậm chí nếu bạn sử dụng chúng, bạn có thể không an toàn 100% so với ảnh chụp màn hình.

+0

Trên thực tế, có sự khởi đầu của khả năng như vậy trong các nguồn chính thức, và nó có thể sử dụng trên một số thiết bị nhà cung cấp bởi các ứng dụng không phải root. –

+0

Tuy nhiên, chúng không chính thức cho đến khi chúng nằm trong tài liệu API. Tôi chỉ đơn giản nói rằng bởi vì bất kỳ phương pháp chụp ảnh màn hình hiện tại hoặc không được hỗ trợ hoặc trực tiếp từ SDK, rất có thể không có phương pháp chính thức nào để tương tác với nó. –

+0

Điều gì về 'View.getDrawingCache (boolean autoScale)'? Doc đọc: _Trả lại bitmap trong đó bản vẽ khung nhìn này được lưu trữ ._ – iDroid

18

này làm việc cho tôi trên Samsung Tab 2 7"

Sử dụng the following approach, chỉ cần thêm các FLAG_SECURE đến Flags Window

public class FlagSecureTestActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getWindow().setFlags(LayoutParams.FLAG_SECURE, 
         LayoutParams.FLAG_SECURE); 

    setContentView(R.layout.main); 
    } 
} 

với sự báo trước rằng bạn có thể cần phải thay đổi

LayoutParams 

đến

WindowManager.LayoutParams 
+0

Tác phẩm này và phải là câu trả lời cho hầu hết các nhà phát triển. –

+0

không hoạt động ở 7,0 với chế độ ngang. –

Các vấn đề liên quan