반응형
대화 상자를 통한 Android 공유
TFLN (어젯밤의 텍스트)과 같은 앱에있는 "공유를 통해"대화 상자를 보았습니다. 다음과 같이 보입니다 : 공유 대화 http://garr.me/wp-content/uploads/2009/12/sharevia.jpg
텍스트를 공유하려고합니다. 누군가 나를 올바른 방향으로 가리킬 수 있습니까? 이것은 의도로 수행됩니까?
이것은 실제로 인 텐트로 수행됩니다.
예제 사진에서와 같이 이미지를 공유하려면 다음과 같습니다.
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
share.putExtra(Intent.EXTRA_STREAM,
Uri.parse("file:///sdcard/DCIM/Camera/myPic.jpg"));
startActivity(Intent.createChooser(share, "Share Image"));
텍스트의 경우 다음과 같이 사용합니다.
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT, "I'm being sent!!");
startActivity(Intent.createChooser(share, "Share Text"));
나는 받아 들여진 대답에 문제가 있었다. 나를 위해 일한 것은 경로에서 파일을 만든 다음 다음과 같이 파일의 URI를 구문 분석하는 것입니다.
Uri.fromFile(new File(filePath));
대신에
Uri.parse(filePath)
누군가가 같은 문제를 겪고있는 경우를 대비하여.
예. MIME 유형 이미지 / jpeg (예 : JPEG 이미지 공유를 지원하려는 경우)의 개체를 처리 할 수있는 인 텐트 필터와 ACTION_SEND 작업을 제공하는 활동을 제공해야합니다.
대부분의 내장 Android 앱은 오픈 소스이므로 메시징 앱의 매니페스트 파일을 확인하여 사용중인 인 텐트 필터를 확인할 수 있습니다.
참조 : 다른 앱에서 간단한 데이터 받기
매니페스트 업데이트
<activity android:name=".ui.MyActivity" >
//To receive single image
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
//To receive multiple images
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
들어오는 콘텐츠 처리
public class MyActivity extends AppCompactActivity {
void onCreate(Bundle savedInstanceState) {
// Get intent, action and MIME type
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if (type.startsWith("image/")) {
handleSendImage(intent); // Handle single image being sent
}
} else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
if (type.startsWith("image/")) {
handleSendMultipleImages(intent); // Handle multiple images being sent
}
}
}
void handleSendImage(Intent intent) {
Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (imageUri != null) {
// Update UI to reflect image being shared
}
}
void handleSendMultipleImages(Intent intent) {
ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
if (imageUris != null) {
// Update UI to reflect multiple images being shared
}
}
}
참조 URL : https://stackoverflow.com/questions/3553017/android-share-via-dialog
반응형
'Nice programing' 카테고리의 다른 글
일반 배열을 포함하는 객체의 GetHashCode 재정의 (0) | 2021.01.10 |
---|---|
VIM 스크립팅에 대한 좋은 가이드? (0) | 2021.01.10 |
Glassfish 또는 Tomcat 앞에서 Apache Web Server를 사용하는 이유는 무엇입니까? (0) | 2021.01.10 |
JS : 자식 창이 닫힐 때 듣기 (0) | 2021.01.10 |
XCode 4에서 특정 코드 줄로 이동하려면 어떻게합니까? (0) | 2021.01.10 |