Android 앱은 공유 버튼을 어떻게 구현합니까?


11

안드로이드 애플리케이션과 안드로이드가 공유 버튼과 공유 메커니즘을 어떻게 구현하는지 궁금합니다. 예를 들어 YouTube에서 공유 버튼을 누르면 공유 할 앱 목록이 팝업으로 표시됩니다. 이 목록은 어떻게 결정됩니까? 특정 "공유"의도가있는 경우 의도 엑스트라에 제공된 유형의 의도를 공유 할 수있는 모든 지점이 표시됩니까? 이를 구현하는 데 사용 된 디자인 패턴의 기술적 이름은 무엇입니까? 감사.


1
정말 "똥"을 의미 했습니까, 아니면 "팝"에 대한 오타입니까? 적어도 미국 영어에서는 전자가 기저귀에게하는 일입니다.
JDługosz 2016 년

네가 옳아. 최근에 Android에서 Swype 키보드로 전환하여 더 빨리 입력 할 수 있지만 때로는 잘못된 단어를 입력하여 알 수 없습니다. 아직 어떻게해야할지 잘 모르겠지만, 나는 매우 신중한 사람이 아닙니다. 때로는 서브에서 화면을 제대로 볼 수 없습니다.
잭 매 딩턴

잠수함에 (잠수함?)! 해야 할 일 : 제출하기 전에 교정하십시오. 창피한 단어로 예측 목록을 오염시키지 마십시오.
JDługosz 2016 년

우연히도 내 예측 목록은 Swype가 자동으로 읽은 오래된 전자 메일의 내용으로 채워져 있습니다. 이케 스!
잭 매 딩턴

답변:


10

여기에는 커뮤니케이션 앱이 공유 할 수 있다고 말하는 메커니즘과 콘텐츠가있는 앱이 공유하는 메커니즘이 있습니다. 한 번에 하나씩 처리하지만 먼저 의도 에 대한 간단한 참고 사항을 다룰 것 입니다.

의도

Android 의 의도 는 앱을 시작하는 데 사용됩니다. 바로 가기 또는 Windows 파일 연결처럼 작동 할 수 있습니다. 인 텐트는 시작할 앱 이름을 지정할 수 있지만 반드시 그럴 필요는 없습니다. 또한 수행 할 작업 (예 : "주 활동 열기", "이 URL보기", "달력 항목 작성") 및 수행 할 개체의 MIME 유형 (예 : 보려는 항목)을 지정할 수도 있습니다. 유형의 이미지 / jpeg) 일부 작업 이름은 특정 앱에 따라 다르지만, 앱이 상호 작용할 수 있도록 Android에 의해 표준화되었습니다.

인 텐트 필터 및 통신 앱

각 앱은 인 텐트 필터 를 지정 하여 수행 할 수있는 작업 종류를 알려줍니다. 예를 들어 이미지 뷰어 앱은 MIME 유형이 "image / *"인 "이 URL보기"에 대한 의도 필터를 등록합니다. 웹 브라우저는 URL 체계가 "http"또는 "https"인 "이 URL보기"에 대한 의도 필터를 등록합니다. 사물을 공유 할 수 있도록 앱은 특정 유형 (예 : 사진 만 공유 할 수있는 경우) 또는 모든 유형에 대해 "보내기"의도에 대한 의도 필터를 등록합니다.

컨텐츠 앱

일부 콘텐츠를 공유하려는 앱은 "공유"작업 및 공유 할 콘텐츠를 가리키는 URL을 사용하여 의도를 만듭니다. (이는 수신 앱에 콘텐츠 앱의 개인 저장소에있는 파일 또는 콘텐츠 앱에서 생성 된 스트림에 임시로 액세스 할 수있게하는 "임시"URL 인 경우가 많습니다.) 의지. 그런 다음 Android 프레임 워크에 대한 의도를 제공하고 Android에 선택기 대화 상자 를 표시하도록 요청 합니다. Android는 설치된 모든 앱의 인 텐트 필터와 인 텐트를 비교하여 목록을 만들어 사용자에게 보여줍니다. 사용자가 특정 앱을 선택하면 Android가 해당 앱을 시작하고 의도를 전달합니다. 앱은 URL을 사용하여 원본 앱에서 콘텐츠를 가져옵니다.

마시멜로의 새로운 기능 : 직접 공유

마시멜로에는 Direct Share 라는 또 다른 메커니즘이 있습니다. 이 기능은 의도 메커니즘을 보완하므로 선택자 대화 상자에서 직접 공유 할 사람이나 그룹을 선택하여 "누가 그것을 보내고 싶은가"의 추가 단계를 건너 뛸 수 있습니다. 통신 앱은 서비스를 제공해야합니다. 콘텐츠가있는 앱이 선택자를 요청하면 Android는 각 관련 앱에 대한 서비스를 시작합니다. 서비스는 관련 공유 대상 목록을 반환 하고 Android는 이러한 모든 개별 목록을 대화 상자에 표시되는 목록으로 어셈블합니다.


그러나 앱에 몇 가지 선택기 대화 상자가 표시되는 것을 보았습니다 . 그것들은 모두 OS에 의해 실제로 표시됩니까, 아니면 앱 자체가 대상 목록을 얻을 수 있습니까?
user1686 2016 년

@grawity 내장 대화 상자에는 몇 가지 사용자 정의 옵션 (예 : 제목 설정)이 있지만, 앱이 Android에 공유 대상 목록을 요청하여 자체 대화 상자에 넣을 수도 있습니다. 내 브라우저 선택기 bURLy 가 이에 대한 예이지만 "보내기"의도 대신 "URL 열기"의도가 있습니다.
Dan Hulme

11

나는 개발자가 아니기 때문에 그냥 설명 만 할 수 있습니다. 앱 Manifest은 공유 작업에 대해 이해하고 기꺼이 응답하는 Mimetype을 선언 합니다. 이를 위해 소위 "의도 필터"를 정의합니다. 예 :

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="application/*" />
    <data android:mimeType="audio/*" />
    <data android:mimeType="image/*" />
    <data android:mimeType="message/*" />
    <data android:mimeType="multipart/*" />
    <data android:mimeType="text/*" />
    <data android:mimeType="video/*" />
</intent-filter>

따라서 "공유"버튼을 누를 때마다 공유 할 콘텐츠가 평가되고 형식을 기꺼이 받겠다 고 선언 한 앱과 비교됩니다.

출처 :


1
그것은 거의 직접적입니다. 자체 공유 응용 프로그램은 일부 자체 응답자를 필터링 할 수 있지만 대부분 그렇지 않습니다.
coteyr 2016 년

2
@HiltonShumway 그래서 나는 그의 대답을 찬성했습니다. 나 외에, Dan은 개발에 적합하며 일이 어떻게 진행되는지 훨씬 더 잘 알고 있습니다. 그래서 내가 답변을 올렸을 때, 나는 그가 하나의 글을 올릴 것으로 기대했다 – 그는 내 희망을 실망시키지 않았다 :)
Izzy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.