Android에서 사용자 지정 텍스트 선택 작업 제공
(출처: Google Play )
목차
Further cases
작동 방식
Android 6.0부터 텍스트를 선택하면 플로팅 텍스트 선택 도구 모음이 나타납니다. 기본적으로 잘라내기, 복사 및 붙여넣기와 같은 일반적인 작업이 표시됩니다. 가장 좋은 점은 모든 앱이 텍스트 선택 도구 모음에 대한 사용자 지정 작업을 제공할 수 있다는 것입니다.
기본적으로 활동은 암시적 의도를 수신해야 합니다
ACTION_PROCESS_TEXT
. 이를 위해 아래와 같이 매니페스트의 활동 내부에 intent filter을 추가해야 합니다.<activity
android:name=".UppercaseActivity"
android:label="@string/action_uppercase"
>
<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>
EXTRA_PROCESS_TEXT
매개변수에는 강조표시된 텍스트가 포함되어 있습니다.val text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT)
매개변수가 하나 더 있습니다
EXTRA_PROCESS_TEXT_READONLY
. EditText
와 같은 편집 가능한 필드에서 작업이 트리거되었는지 확인하는 데 사용할 수 있습니다. 따라서 읽기 전용이 아닌 경우 수정된 버전의 텍스트를 반환할 수 있습니다.val readonly = intent.getBooleanExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, false)
일반적으로 전체 코드를 볼 때 내 마음은 개념을 더 잘 이해합니다. 따라서 다음은 잠재적인 구현 방법입니다.
class UppercaseActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT)
val readonly = intent.getBooleanExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, false)
if(!readonly && text != null){
val outgoingIntent = Intent()
outgoingIntent.putExtra(Intent.EXTRA_PROCESS_TEXT, text.toString().toUpperCase())
setResult(Activity.RESULT_OK, outgoingIntent)
} else {
Toast.makeText(this, "Text cannot be modified", Toast.LENGTH_SHORT).show()
}
finish()
}
}
이제 우리의 예를 살펴봅시다:
추가 사례
여러 작업
단일 앱으로 여러 작업을 배포하려는 경우 각 텍스트 선택 작업에는 별도의 활동이 필요합니다.
<activity
android:name=".UppercaseActivity"
android:label="@string/action_uppercase"
>
<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>
<activity
android:name=".LowercaseActivity"
android:label="@string/action_lowercase"
>
<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>
<activity
android:name=".ReverseActivity"
android:label="@string/action_reverse"
>
<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>
서비스 시작
인텐트
ACTION_PROCESS_TEXT
의 경우 Android 시스템은 활동만 찾습니다. 즉, 이 의도로 서비스를 직접 시작할 수 없습니다. 그러나 귀하의 활동은 나중에 단순히 서비스를 시작할 수 있습니다.특정 유형의 텍스트 듣기
전화번호, 링크 등과 같은 특정 유형의 텍스트에 대해서만 작업이 트리거될 수 있는지 궁금할 수 있습니다. 불행히도 Android 시스템 내에서는 이를 수행할 방법이 없습니다. 즉, 당신의 행동은 항상 나타날 것입니다. 따라서 처리하기 전에 사용자 입력의 유효성을 검사해야 합니다.
조심하세요: launchMode singleTop
활동이
launchMode=”singleTop”
로 구성된 경우 onNewIntent()
메서드 내에서 텍스트 선택 작업도 처리해야 합니다. (launchMode에 대한 자세한 내용은 Tasks을 참조하십시오.)참조
Creating custom Text Selection actions with ACTION_PROCESS_TEXT by Ian Lake
Understand Tasks and Back Stack 안드로이드용
Intents and Intent Filters 안드로이드용
Reference
이 문제에 관하여(Android에서 사용자 지정 텍스트 선택 작업 제공), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bigaru/providing-custom-text-selection-actions-in-android-1akc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)