Android에서 ClipData의 "label"매개 변수는 정확히 무엇입니까?
Android 문서 에 따르면 ClipData는 복사 된 데이터에 대한 금지 표현으로 '라벨'을 사용합니다.
ClippedData는 하나 이상의 항목 인스턴스를 포함하는 복합 유형으로, 각 인스턴스는 데이터 항목의 하나 이상의 표현을 보유 할 수 있습니다. 사용자에게 표시하기 위해 레이블과 아이콘 표현도 있습니다.
다음 그런 일부 API 문서 의 클립 데이터 에 대해 user-가 볼 수있는 레이블 로 "라벨"을 추가로 설명합니다 . 그러나 레이블 사용에 여전히 혼란 스럽습니다.
이 레이블은 사용자에게 어떻게 표시 표시? 어떻게하면 되나요? ClipData 팩토리 메서드를 호출 할 때이 레이블에 무엇을 설정해야 newPlainText(CharSequence label, CharSequence text)
합니까? 예를 들면 :
private void copyToClipBoard() {
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText(
"text label", // What should I set for this "label"?
"content to be copied");
clipboard.setPrimaryClip(clip);
Toast.makeText(AboutActivity.this, "Saved to clip board", Toast.LENGTH_SHORT).show();
}
ClipData clip = ClipData.newPlainText(
"text label",
"content to be copied");
여기 텍스트 레이블은 클립에있는 데이터를 설명합니다.
예.
ClipData clip = ClipData.newPlainText(
"user Name",
user.getName());
우리는 이것을 사용하여 검색 할 수 있습니다.
clip.getDescription ();
문서의 "사용자에게 표시되는 클립 데이터 레이블"설명은 개발자가 설정 한 다음 Android 시스템이 사용자에게 표시하는 것이 아니라 사용자에게 직접 할 수있는 해석되어야하는 것입니다.
Android 소스 코드를 사용하지 않는 것 ClipDescription.getLabel () 메소드
가 Android 5.0 이전에 사용되지 않는 것입니다. 5.0 RemoteInput 에서 RemoteInputCompatJellybean 및 com.android.mail.compose.ComposeActivity는 메소드를 사용하여 명시했습니다 .사용법을 살펴보면 모든 레이블이 사용자에게 표시되지 않고 코드의 다른 위치에있는 클립을 프로그래밍 방식으로 사용하는 데 사용됩니다.
Android 내에서 ClipData.newPlainText () 가 어떻게 사용 하는지 사용하는 방식 볼 때 대부분의 경우 null이 레이블로 지정되어 레이블이 어떤 용도로도 발생하지 않습니다.
물론 일부 휴대폰 멕시코 나 다른 앱 개발자가 레이블을 가져 오는 상황에서 사용자에게 표시 할 수도 있습니다. 그러나 일반적으로 클립의 레이블은 직접 표시하는 경우에만 앱에서 사용자에게 가정하는 것이 안전해야합니다.
오늘 내 앱에서 작업하는 동안 ClipData 레이블의 사용 사례를 발견했습니다. 일부 앱은 null로 설정하고 다른 앱은 거의 사용합니다.
내 앱의 경우 ClipManager의 addPrimaryClipChangedListener
거의 항상 백그라운드에서 실행되는 서비스 클래스 에서이 작업을 수행하고 있습니다. 내 앱 내에서 primaryClip에 추가 된 데이터를 다른 앱에 추가 된 데이터와 다르게 처리하고 싶습니다 (웹 브라우저에서 복사 한 텍스트를 말할 수 있음).
다음은 내 코드의 발췌 내용과 ClipData 레이블을 사용하는 방법입니다.
mClipBoardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
String clipLabel = "default";
if (mClipBoardManager.getPrimaryClip().getDescription().getLabel() != null) {
clipLabel = mClipBoardManager.getPrimaryClip().getDescription().getLabel().toString();
}
if (clipLabel.equals("auto_copy_text")) {
//TODO: Text from my app do stuffs you will do with text from my app
} else {
//TODO: Text from some other app
}
}
});
내 앱에서 primaryClip에 데이터를 추가 할 때 다음과 같은 레이블을 포함합니다.
private void addToClipboard(String text) {
mClipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
mClipboardManager.setPrimaryClip(ClipData.newPlainText("auto_copy_text", text));
}
이게 도움이 되길 계속
참조 URL : https://stackoverflow.com/questions/33207809/what-exactly-is-label-parameter-in-clipdata-in-android
'ProgramingTip' 카테고리의 다른 글
프래그먼트를 사용하여 공유 요소 전환을 시작하는 방법은 무엇입니까? (0) | 2020.12.25 |
---|---|
Android-CoordinatorLayout에서 사용하면 바닥 글이 화면 외 스크롤됩니다. (0) | 2020.12.25 |
실행되지 않은 코드가 주석 처리되면 Java 프로그램이 느리게 실행됩니다. (0) | 2020.12.25 |
리터럴을 만드는 방법 : 클래스 (0) | 2020.12.25 |
std :: string을 UTF-8 텍스트 파일에 쓰는 방법 (0) | 2020.12.25 |