Android-인 텐트에 대한 응답으로 이미지를 다른 애플리케이션에 전달

Rayjax

Android 용 간단한 이미지 갤러리 앱을 만들고 있습니다. 사용자가 SMS, 이메일, 채팅 애플리케이션에 이미지를 추가하고 싶을 때 이미지를 선택할 수 있기를 원합니다. 앱 선택기 메뉴에 내 앱을 표시하기 위해 의도 필터를 사용했습니다. 사용자가 이미지를 추가하려고합니다.

        <intent-filter>
            <action android:name="android.intent.action.GET_CONTENT" />
            <category android:name="android.intent.category.OPENABLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="image/*" />
            <data android:mimeType="vnd.android.cursor.dir/image" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="image/*" />
            <data android:mimeType="vnd.android.cursor.dir/image" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.media.action.IMAGE_CAPTURE" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

그러면 사용자가 이미지를 선택할 수 있지만 발신자 앱에 응답하는 가장 좋은 방법을 찾고 있습니다.

이미지를 임시 파일로 저장하고 해당 파일의 URI를 보내려고했습니다.

    public void respondWithImage(Bitmap bitmap){
    try {
        //If needed create temp folder
        File folder = new File(Environment.getExternalStorageDirectory() + "/temp/");
        if (!folder.exists()) {
            folder.mkdirs();
        }
        File nomediaFile = new File(folder, ".nomedia");
        if (!nomediaFile.exists()) {
            nomediaFile.createNewFile();
        }

        //Create temp image file
        FileOutputStream out = new FileOutputStream(
                Environment.getExternalStorageDirectory()
                        + "/temp/temp.png");
        bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
        File bitmapFile = new File(
                Environment.getExternalStorageDirectory()
                        + "/temp/temp.png");

        //Tell parent activity to respond with the image
        if (bitmapFile.exists()) {
            Intent localIntent = new Intent().setData(Uri
                    .fromFile(bitmapFile));
            parentActivity.setResult(Activity.RESULT_OK, localIntent);
        } else {
            parentActivity.setResult(Activity.RESULT_CANCELED);
        }
        parentActivity.finish();

    } catch (Exception e) {
        e.printStackTrace();
        Log.d("error", "Error writing data");
    }
}

이것은 작동하지만 전화에 sdcard가 없으면 어떻게 될지 궁금합니다. 자체 메모리를 내선 카드로 간주하는 GS3가 있기 때문에 해당 옵션을 시도 할 수 없습니다. (내가 틀리면 수정하세요)

또한 내 앱 내에서 드로어 블 리소스 (PNG 파일)를 가리키는 URI를 다시 보내려고 시도했지만 ( 앱 리소스에 이미지가있는 경우 문제가되지 않음) 호출 앱 (MMS) 충돌이 발생합니다. 디버거에서 오류가 발생하지 않습니다.

이를 수행하는 올바른 방법은 무엇입니까?

CommonsWare

이것은 작동하지만 전화에 sdcard가 없으면 어떻게 될지 궁금합니다.

"sdcard"를 사용하고 있지 않습니다.

자체 메모리를 내선 카드로 간주하는 GS3가 있기 때문에 해당 옵션을 시도 할 수 없습니다. (내가 틀리면 수정하세요)

외부 저장소는 일반적으로 온보드 플래시이며 일반적으로 내부 저장소가있는 동일한 파티션에 있습니다. 하지만 외부 저장 장치에 대한 설명서가 잘되지 않습니다, 당신은 그것을 검토 할 수 있습니다.

또한 내 앱 내에서 드로어 블 리소스 (PNG 파일)를 가리키는 URI를 다시 보내려고 시도했지만 호출 앱 (MMS)이 중단되고 디버거에서 오류가 발생하지 않습니다.

타사 앱이 아닌 앱을 디버깅 할 때 디버거의 일부 타사 앱에서 충돌이 발생하지 않습니다. 하지만 LogCat에는 스택 추적이 포함될 수 있습니다.

이를 수행하는 올바른 방법은 무엇입니까?

FileProvider, 또는 아마도 my를 StreamProvider사용ContentProvider 하여 이미지 를 제공하기 위해를 제공하십시오. 귀하는 Uri다음이 될 것입니다 content:// Uri. 이미지는 일반적으로 콘텐츠 제공 업체 (예 : 이메일 첨부 파일)에서 제공되므로 대부분의 앱에서 지원되어야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android에서 한 애플리케이션에서 다른 애플리케이션으로 데이터를 전달하는 방법

분류에서Dev

Android의 한 애플리케이션에서 다른 애플리케이션으로 바이너리 데이터를 안전하게 전송

분류에서Dev

Android-한 애플리케이션에서 다른 애플리케이션으로 전환하는 방법은 무엇입니까?

분류에서Dev

Android 애플리케이션에서 인 텐트를 통해 전송 된 jpeg 이미지보기

분류에서Dev

각 애플리케이션 모듈에 대한 다중 로거 인스턴스

분류에서Dev

터미널에서 실행중인 다른 애플리케이션으로 전환

분류에서Dev

다른 애플리케이션에서 작성중인 파일에 대한 Grep

분류에서Dev

Android 애플리케이션에서 다른 애플리케이션의 로그를 인쇄 할 수 있습니까?

분류에서Dev

서로 다른 두 웹 애플리케이션간에 매개 변수 전달

분류에서Dev

메인 클래스에서 JavaFX 애플리케이션으로 객체 전달

분류에서Dev

Android-인 텐트를 통해 다른 키 이름으로 동일한 값 전달

분류에서Dev

xcodebuild는 iOS의 애플리케이션에 인수를 전달합니다.

분류에서Dev

다양한 수의 입력을 r의 목록으로 함수에 전달 (애플리케이션 : plot_summs)

분류에서Dev

Gradle 애플리케이션 플러그인-mainClassName이 다른 동일한 프로젝트에 대한 여러 시작 스크립트 / dists 빌드

분류에서Dev

Rails에서 타사 애플리케이션의 응답 전달

분류에서Dev

ActiveRecord :: RecordNotFound : ID = 인 애플리케이션에 대해 ID = 5 인 응답을 찾을 수 없습니다.

분류에서Dev

Android 애플리케이션에서 서버로 데이터 전달

분류에서Dev

bash 스크립트에서 Java 애플리케이션의 프로세스 ID를 찾습니다 (대상 애플리케이션이 이미 실행 중인지 확인).

분류에서Dev

codeigniter 애플리케이션에서 다른 웹 사이트로 기본값을 전달하는 방법

분류에서Dev

한 활동에서 다른 활동으로 listView 정보를 전달하는 다중 인 텐트

분류에서Dev

다른 로그 파일을 사용하여 동일한 애플리케이션에 로그인

분류에서Dev

Android 애플리케이션에 대한 다국어 지원 활성화

분류에서Dev

Android에서 서로 다른 두 애플리케이션 간의 공유 요소 전환?

분류에서Dev

Android 애플리케이션에서 Azure 웹 API에 대한 호출이 응답을 기다리는 동안 영원히 중단됨

분류에서Dev

새로운 Android 버전에 대한 애플리케이션을 비활성화 할 수 있습니까?

분류에서Dev

Google 애플리케이션 업데이트-Android Live 애플리케이션에 대한 즉각적인 업데이트 관련

분류에서Dev

AndroidViewModel 대 ViewModel에 애플리케이션 컨텍스트 전달

분류에서Dev

PyQt5 애플리케이션에 대한 대체 OAuth2 로그인

분류에서Dev

로그인하기 전에 NOIP 애플리케이션 시작

Related 관련 기사

  1. 1

    Android에서 한 애플리케이션에서 다른 애플리케이션으로 데이터를 전달하는 방법

  2. 2

    Android의 한 애플리케이션에서 다른 애플리케이션으로 바이너리 데이터를 안전하게 전송

  3. 3

    Android-한 애플리케이션에서 다른 애플리케이션으로 전환하는 방법은 무엇입니까?

  4. 4

    Android 애플리케이션에서 인 텐트를 통해 전송 된 jpeg 이미지보기

  5. 5

    각 애플리케이션 모듈에 대한 다중 로거 인스턴스

  6. 6

    터미널에서 실행중인 다른 애플리케이션으로 전환

  7. 7

    다른 애플리케이션에서 작성중인 파일에 대한 Grep

  8. 8

    Android 애플리케이션에서 다른 애플리케이션의 로그를 인쇄 할 수 있습니까?

  9. 9

    서로 다른 두 웹 애플리케이션간에 매개 변수 전달

  10. 10

    메인 클래스에서 JavaFX 애플리케이션으로 객체 전달

  11. 11

    Android-인 텐트를 통해 다른 키 이름으로 동일한 값 전달

  12. 12

    xcodebuild는 iOS의 애플리케이션에 인수를 전달합니다.

  13. 13

    다양한 수의 입력을 r의 목록으로 함수에 전달 (애플리케이션 : plot_summs)

  14. 14

    Gradle 애플리케이션 플러그인-mainClassName이 다른 동일한 프로젝트에 대한 여러 시작 스크립트 / dists 빌드

  15. 15

    Rails에서 타사 애플리케이션의 응답 전달

  16. 16

    ActiveRecord :: RecordNotFound : ID = 인 애플리케이션에 대해 ID = 5 인 응답을 찾을 수 없습니다.

  17. 17

    Android 애플리케이션에서 서버로 데이터 전달

  18. 18

    bash 스크립트에서 Java 애플리케이션의 프로세스 ID를 찾습니다 (대상 애플리케이션이 이미 실행 중인지 확인).

  19. 19

    codeigniter 애플리케이션에서 다른 웹 사이트로 기본값을 전달하는 방법

  20. 20

    한 활동에서 다른 활동으로 listView 정보를 전달하는 다중 인 텐트

  21. 21

    다른 로그 파일을 사용하여 동일한 애플리케이션에 로그인

  22. 22

    Android 애플리케이션에 대한 다국어 지원 활성화

  23. 23

    Android에서 서로 다른 두 애플리케이션 간의 공유 요소 전환?

  24. 24

    Android 애플리케이션에서 Azure 웹 API에 대한 호출이 응답을 기다리는 동안 영원히 중단됨

  25. 25

    새로운 Android 버전에 대한 애플리케이션을 비활성화 할 수 있습니까?

  26. 26

    Google 애플리케이션 업데이트-Android Live 애플리케이션에 대한 즉각적인 업데이트 관련

  27. 27

    AndroidViewModel 대 ViewModel에 애플리케이션 컨텍스트 전달

  28. 28

    PyQt5 애플리케이션에 대한 대체 OAuth2 로그인

  29. 29

    로그인하기 전에 NOIP 애플리케이션 시작

뜨겁다태그

보관