-
MOS 부터 floating text selection toolbar 가 나타났다.
여기에 ACTION_PROCESS_TEXT 를 이용해서 어떤 앱이든 custom action 을 추가할 수 있게 되었다.
-
일반적인 TextView 와 EditText 에 쉽게 추가할 수 있다.
EditText 의 경우는 id 가 있어야 하며, AppCompatActivity 를 사용할 경우 getDelegate().setHandleNativeActionModesEnabled(false) 를 호출해주어야 한다.
-
Custom action 의 communication 은 Intent 를 통해 하기 때문에, 이 기능을 사용하려면 Activity 를 아래와 같은 intent-filter 와 함께 정의해주어야 한다.
기능을 여러 개 추가하려면 각각의 Activity 가 필요하다.
<activity
android:name=".ProcessTextActivity"
android:label=“@string/process_text_action_name">
<intent-filter>
<action android:name="android.intent.action.PROCESS_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
여기서 “주의!!” 할 것은 android:label 로 주어진 것이 custom action 으로 등장한다.
exported=“false” 를 줄 경우 노출은 되지만 실제 접근할때 SecurityException 이 난다.
-
Activity 가 수행될 때 Intent.EXTRA_PROCESS_TEXT 로 CharSequence 가 넘어온다
CharSequence 가 넘어온다는 것은 String 이 아니라 Spannable 등도 올 수 있음에 주의해야 한다.
-
launchMode=“singleTop” 일 경우 onNewIntent() 를 handling 해야 한다는 것도 주의하자.
-
EXTRA_PROCESS_TEXT_READONLY 값도 전해진다.
이 녀석은 boolean 값으로 selected text 가 readonly 인지 (예를 들면 TextView 가 true EditText 가 false ) 가 전달된다.
-
결과 전달은 역시 EXTRA_PROCESS_TEXT 로 하며, setResult 를 통해 전달한다.
-
이렇게 설정한 앱이 설치되기만 하면 특별한 설정을 하지 않은 TextView 와 EditText 에서 해당 옵션이 노출된다.
-
끝!!
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] javax.net.ssl.SSLPeerUnverifiedException: No peer certificate (0) | 2020.08.11 |
---|---|
[android] Android Studio 의 Tip & Tricks (0) | 2020.08.04 |
[android] Android SDK-tools, SDK Build-tools, Platform-tools (0) | 2020.08.02 |
[android] Gradle 에 쫄지 말아라 (gradle 잘 이용하자) (0) | 2020.08.01 |
[android] custom lint 만들기 (0) | 2020.07.31 |
댓글