Android ShareCompat을 사용하여 공유할 때 이미지 전달 방법, 콜백 수신 방법
메시지가 많은 것 같았는데 안 나올 줄 몰라서 필기를 했어요.
프로그램 라이브러리
실시
SomeActivity.java
// アクティビティ内から実行する前提のコード
private void showShareChooser() {
File tempFile = new File(getApplicationContext().getExternalCacheDir(), tempImgFilePath);
// ファイルをシェアするためにURIを取得する場合は、FileProviderを通じて、後述するオーソリティの名前を指定して取得する必要がある
Uri uri = FileProvider.getUriForFile(getApplicationContext()
, getApplicationContext().getPackageName() + ".provider"
, tempFile);
ShareCompat.IntentBuilder builder = ShareCompat.IntentBuilder.from(this);
builder.setChooserTitle(chooserTitle) // シェアする時のタイトル
.setSubject(subject) // 件名。使われ方はシェアされた側のアプリによる
.setText(text) // 本文。使われ方はシェアされた側のアプリによる
.setStream(uri) // ファイルをシェアする時は、そのURIを指定
.setType("image/jpeg"); // ストリームで指定したファイルのMIMEタイプ
// URIに対する読み取り権限を付与する
Intent intent = builder.createChooserIntent().addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// コールバックを受け取りたい場合は、そのインテントを使ってアクティビティを開始する
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, SNS_SHARE);
}
// 結果を受け取らなくても良い場合は、ビルダーからそのまま開始できる
// builder.startChooser();
}
수신이 되돌아오는 경우 평상시onActivityResult
대로 수신할 수 있다.@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case SNS_SHARE:
// 戻りを受け取って何らか処理する
// resultCode は必ずゼロになるので、 RESULT_OK で判定しない
doSomething();
break;
default:
super.onActivityResult(requestCode, resultCode, data);
break;
}
}
파일을 공유할 때
이미지 등을 공유하는 경우 Bitmap을 직접 공유할 수 없기 때문에 파일에 잠시 저장해야 합니다.
또한 다음과 같이 저장 목적지에서 읽을 수 있도록 허용해야 한다.
먼저 XML로 경로를 지정합니다.
src/main/res/xml/provider_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-cache-path name="cache" path="." />
</paths>
external-cache-path
등은 보존 목적지에 따라 달라진다.영어지만 참조파일 프로파일러 공식 참조.
그런 다음
AndroidManifest.xml
에서 공급업체를 지정합니다.AndroidManifest.xml
<manifest
package="com.example"
xmlns:android="http://schemas.android.com/apk/res/android">
:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
:
</application>
:
</manifest>
참고 자료
Reference
이 문제에 관하여(Android ShareCompat을 사용하여 공유할 때 이미지 전달 방법, 콜백 수신 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/b_a_a_d_o/items/6c3ef6ebf65d4aecff8c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)