우선 구현하고 싶은 기능은, 만들고자 하는 어플을 어플A라고 하고,
안드로이드에 설치된 다른 어플B와 어플C가 있을 때,
어플B에서 어떤 문자열을 복사한 후 어플A를 열어 클립보드의 내용을 수정하고
수정한 내용을 어플C에 붙여넣기하는 것입니다.
단순히 아무 조건 없이 클립보드에 접근할 수 있으면 어떻게 만들어도 상관이 없지만
안드로이드 10 이후 클립보드 접근 조건이 두 가지가 있더군요.
1. 어플에 포커스가 있어야 한다.
2. IME(input method editor, EditText 같은 거 클릭하면 가상키보드가 뜨는 조건)가 있어야 한다.
단순히 다른 어플 사용 중에도 어플A 의 뷰를 터치하면 클립보드를 읽을 줄 알았는데 서비스만으로는 1. 을 만족시키지 못 하는지 계속 클립보드가 빈 것과 같은 반응을 보였습니다. 그래서 1.을 만족시키기 위해서 어플A에서, MainActivity 에서 서비스를 통해 뷰를 하나 띄웠고, 뷰를 터치하면
팝업으로 액티비티 하나를 실행하도록 했습니다. EditView 를 배치하는 식으로 조건을 만족시키려고 했는데 결국 EditView 를 삭제해도 상관없었습니다.
구현한 부분에서 부족한 부분은,
1. 파파고 미니는 다른 어플을 배경으로 그대로 두고 팝업창으로 뜨는 반면 제가 뷰를 터치해서 Intent 로 액티비티를 startActivity() 하면 배경이 어플A 의 배경인 하얀 화면으로 가득 차버립니다.
2. 만약 어플B와 어플C를 '최근 어플 목록' 버튼을 두 번 터치하면서 전환하는 중에 파파고 미니의 기능을 사용할 경우 '최근 어플 목록'에 파파고 미니는 뜨지 않으므로 여전히 어플B와 C를 두 번 터치로 전환이 가능했습니다. 반면 제가 만든 어플에서는 '최근 어플 목록'에 어플A가 끼어들어버리는 현상이 발생합니다.
※파파고 미니를 띄워놓고 '최근 어플 목록'을 모두 삭제한 후 어플B, C를 실행해 보니 파파고는 어플 목록에 아예 뜨지 않더군요. 그렇기에 어플B와 C를 전환하는 데 방해가 되지 않았습니다.
ChatGPT 에게 예제 코드를 묻기도 하고 구글링도 하면서 만들어보고는 있는데
ChatGPT 도 보안정책을 만족하는 예제를 내놓지 못 하고 구현하려는 기능에 대해
뭐라고 구글링할지도 몰라서 질문을 올려봅니다. 읽어주셔서 감사합니다. _ _)