Android 앱에서 공유 버튼을 활성화하는 방법
안드로이드 앱에 공유 버튼을 추가하고 싶습니다.
이런 거죠.
공유 버튼을 추가했지만 버튼이 활성화되지 않았습니다.클릭은 했지만 아무 일도 일어나지 않았다.
MainActivity.java의 내 코드:
private ShareActionProvider mShareActionProvider;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.share_menu, menu);
getMenuInflater().inflate(R.menu.main, menu);
MenuItem item = menu.findItem(R.id.share_menu);
mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.share_menu).getActionProvider();
mShareActionProvider.setShareIntent(getDefaultShareIntent());
return true;
}
{
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text");
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");
startActivity(Intent.createChooser(sharingIntent, "Share using"));
}
첫 번째 탭(first_tab.xml) 또는 두 번째 탭(second_tab.xml)에서 텍스트를 공유합니다.
코드인 탭(xml)(필요한 경우):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity$DummySectionFragment" >
<TextView
android:id="@+id/section_label1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/text"
android:textColor="@color/text_color" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:src="@drawable/sprite" />
를 넣으세요Button
를 클릭하여Button
다음 코드 추가:
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = "Here is the share content body";
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share via"));
유용한 링크:
ID 공유가 있는 버튼을 만들고 다음 코드 스니펫을 추가합니다.
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = "Your body here";
String shareSub = "Your subject here";
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, shareSub);
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share using"));
}
});
위의 코드 조각은 공유 버튼 클릭 시 공유 선택기를 엽니다.단, 주의사항...에뮬레이터를 사용하면 공유 코드 조각이 그다지 좋은 결과를 출력하지 못할 수 있습니다.실제 결과를 얻으려면 Android 기기에서 코드 스니펫을 실행하여 실제 결과를 얻으십시오.
kotlin:
val sharingIntent = Intent(android.content.Intent.ACTION_SEND)
sharingIntent.type = "text/plain"
val shareBody = "Application Link : https://play.google.com/store/apps/details?id=${App.context.getPackageName()}"
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "App link")
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody)
startActivity(Intent.createChooser(sharingIntent, "Share App Link Via :"))
다음과 같이 임의의 파일을 공유합니다(Kotlin ).
먼저 폴더에 이름을 붙여진 폴더를 만들고 이름이 붙여진 새 XML 리소스 파일을 만들고 그 안에 다음 코드를 넣습니다.
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path
name="files"
path="."/>
<external-path
name="external_files"
path="."/>
</paths>
이제 폴더로 이동하여 를 열고 아래 코드를 입력해 주세요.<application>
태그:
<provider
android:name="androidx.core.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_paths.xml file path in this example
</provider>
이제 아래 코드를 입력해 주세요.setOnLongClickListener
:
share_btn.setOnClickListener {
try {
val file = File("pathOfFile")
if(file.exists()) {
val uri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", file)
val intent = Intent(Intent.ACTION_SEND)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
intent.setType("*/*")
intent.putExtra(Intent.EXTRA_STREAM, uri)
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent)
}
} catch (e: java.lang.Exception) {
e.printStackTrace()
toast("Error")
}
}
코틀린
클릭 리스너 내부에서 whatsApp, e-메일, Slack 등의 애플리케이션을 통해 텍스트를 공유하기 위해 이 모듈을 추가해야 했습니다.
shareOptionClicked.setOnClickListener{
val shareData = Intent(Intent.ACTION_SEND)
shareData.type = "text/plain"
val dataToShare = "Text from my application"
shareData.putExtra(Intent.EXTRA_SUBJECT, "Subject from my application")
shareData.putExtra(Intent.EXTRA_TEXT, dataToShare)
startActivity(Intent.createChooser(shareData, "Share Via"))
}
언급URL : https://stackoverflow.com/questions/17167701/how-to-activate-share-button-in-android-app
'source' 카테고리의 다른 글
vuejs 앱을 마우스 오른쪽 버튼으로 클릭할 때 오류 발생 (0) | 2022.09.03 |
---|---|
터미널에서 sbt를 실행할 때 "Getting org.scala-sbt sbt 0.13.6..."에서 멈춥니다. (0) | 2022.09.03 |
C의 문자열 변수에 명명된 함수를 호출합니다. (0) | 2022.09.03 |
Vuex Store Object Child가 정의되지 않은 상태로 반환되고 상위 항목이 올바르게 반환됩니다. 이유가 무엇입니까? (0) | 2022.09.01 |
VueJ에서 요소 높이 보기 (0) | 2022.09.01 |