Android에서 애플리케이션 "링크"공유


105

내 애플리케이션 사용자가 내 앱을 다른 사용자와 공유 / 추천 할 수 있기를 원합니다. ACTION_SEND 인 텐트를 사용합니다. 다음 줄을 따라 일반 텍스트를 추가합니다.이 멋진 응용 프로그램을 설치합니다. 하지만 예를 들어 사용자가 마켓 플레이스의 설치 화면으로 직접 이동할 수있는 방법을 찾을 수 없습니다. 내가 제공 할 수있는 것은 웹 링크 나 텍스트뿐입니다. 즉, Android 사용자가 내 앱을 설치하는 매우 직접적인 방법을 찾고 있습니다.

도움 / 포인터 감사합니다.

도마

답변:


267

이렇게하면 이메일, whatsapp 등에서 선택할 수 있습니다.

try { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND);  
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "My application name");
    String shareMessage= "\nLet me recommend you this application\n\n";
    shareMessage = shareMessage + "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID +"\n\n";
    shareIntent.putExtra(Intent.EXTRA_TEXT, shareMessage);  
    startActivity(Intent.createChooser(shareIntent, "choose one"));
} catch(Exception e) { 
    //e.toString();
}   

1
Firebase 공유 애플리케이션. 에 대해 자세히 읽어 firebase.google.com/docs/invites/android
바헤 Gharibyan

왜 이것이 try / catch 블록에 싸여 있습니까?
Louis

7
Android는이 코드가 향후 업데이트에서 실패할지 여부를 알 수 있도록 업데이트에 많은 변경을하는 것을 좋아합니다
Ton

1
@Ton 제목 및 텍스트와 함께 앱 아이콘 이미지를 보내려면 어떻게해야합니까?
Arbaz Alam 2018

백그라운드 스레드에서 수행하면 메인 스레드에 대해 다소 무겁습니다. 사용자는 배경 스레드에서 지연 느끼지 않을 것
blockwala

33

지원 라이브러리의 ShareCompat 클래스 도 사용할 수 있습니다 .

ShareCompat.IntentBuilder.from(activity)
    .setType("text/plain")
    .setChooserTitle("Chooser title")
    .setText("http://play.google.com/store/apps/details?id=" + activity.getPackageName())
    .startChooser();

https://developer.android.com/reference/android/support/v4/app/ShareCompat.html


언어도 설정할 수 있나요? &hlURL에 태그를 추가하는 것이 간단하다는 것을 알고 있지만 setLang과 같은 라이브러리에서 사용할 수 있는지 궁금합니다.
kiranking

3
링크에서 항상 http 대신 https를 사용하십시오.
ubuntudroid

20

도마,

사용자에게 market://앱의 세부 정보 페이지로 직접 연결되는 링크 를 제공 할 수 있습니다. 다음은 developer.android.com에서 가져온 것입니다.

응용 프로그램의 세부 정보 페이지로드

Android 마켓에서 모든 애플리케이션에는 사용자에게 애플리케이션의 개요를 제공하는 세부 정보 페이지가 있습니다. 예를 들어 페이지에는 개발자가 제공 한 경우 앱에 대한 간단한 설명과 사용중인 앱의 스크린 샷, 사용자의 피드백 및 개발자에 대한 정보가 포함됩니다. 세부 정보 페이지에는 사용자가 애플리케이션의 다운로드 / 구매를 트리거 할 수있는 "설치"버튼도 포함되어 있습니다.

사용자에게 특정 애플리케이션을 추천하려는 경우 애플리케이션은 사용자를 애플리케이션의 세부 정보 페이지로 직접 안내 할 수 있습니다. 이를 위해 애플리케이션은 다음 형식의 URI 및 쿼리 매개 변수를 포함하는 ACTION_VIEW 인 텐트를 전송합니다.

market : // details? id =

이 경우 packagename 매개 변수는 애플리케이션의 manifest 파일에있는 manifest 요소의 package 속성에 선언 된대로 대상 애플리케이션의 정규화 된 패키지 이름입니다. 예를 들면 :

market : // details? id = com.example.android.jetboy

출처 : http://developer.android.com/guide/publishing/publishing.html


링크 +1. 좋아 보인다. 사용자가 공유하기를 원하기 때문에 여전히 ACTION_SEND를 사용하고 내 텍스트에 시장 링크를 추가해야합니다. 사용자가이를 클릭하면 설치 페이지로 리디렉션됩니다. 나는 그것을 시도해야 좋은 것 같다. 내가 당신을 옳게 이해했다면 알려주세요.
Thomas

예, ACTION_SEND의 텍스트에서 마켓 링크를 사용할 수 있습니다. 그래도 Android 기기에서 클릭 한 경우에만 작동합니다.
Will Tate

1
그러나이 링크는 ACTION_SEND를 사용하는 경우 시장 링크를 열지 않으며 링크는 간단한 텍스트로 유지됩니다. 그러나 링크는 ACTION_VIEW로 시장을 여는 데 도움이되었습니다.
varun bhardwaj 2011 년

13

이 메서드를 호출하십시오.

public static void shareApp(Context context)
{
    final String appPackageName = context.getPackageName();
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Check out the App at: https://play.google.com/store/apps/details?id=" + appPackageName);
    sendIntent.setType("text/plain");
    context.startActivity(sendIntent);
}

10

더 정확하게

   Intent intent = new Intent(Intent.ACTION_VIEW);
   intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.android.example"));
   startActivity(intent);

또는 개발자의 다른 앱을 공유하려는 경우. 계정 당신은 이와 같은 것을 할 수 있습니다

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://play.google.com/store/apps/developer?id=Your_Publisher_Name"));
startActivity(intent);

7

애플리케이션 이름과 애플리케이션 ID를 자동으로 채우려면 다음을 사용할 수 있습니다.

int applicationNameId = context.getApplicationInfo().labelRes;
final String appPackageName = context.getPackageName();
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT, activity.getString(applicationNameId));
String text = "Install this cool application: ";
String link = "https://play.google.com/store/apps/details?id=" + appPackageName;
i.putExtra(Intent.EXTRA_TEXT, text + " " + link);
startActivity(Intent.createChooser(i, "Share link:"));

5

제목이 app_name 인 애플리케이션 공유, 콘텐츠는 애플리케이션 링크

private static void shareApp(Context context) {
    final String appPackageName = BuildConfig.APPLICATION_ID;
    final String appName = context.getString(R.string.app_name);
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    String shareBodyText = "https://play.google.com/store/apps/details?id=" +
            appPackageName;
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, appName);
    shareIntent.putExtra(Intent.EXTRA_TEXT, shareBodyText);
    context.startActivity(Intent.createChooser(shareIntent, context.getString(R.string
            .share_with)));
}

앱 아이콘을 공유하는 방법
John dahat

4

이 질문에 대한 답변을 받았지만 다른 해결책을 공유하고 싶습니다.

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
String shareSubText = "WhatsApp - The Great Chat App";
String shareBodyText = "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en";
shareIntent.putExtra(Intent.EXTRA_SUBJECT, shareSubText);
shareIntent.putExtra(Intent.EXTRA_TEXT, shareBodyText);
startActivity(Intent.createChooser(shareIntent, "Share With"));

1

마지막 으로이 코드는 Android 장치에서 이메일 클라이언트를 여는 데 사용됩니다. 이 스 니펫을 시도하십시오.

Intent testIntent = new Intent(Intent.ACTION_VIEW);
                    Uri data = Uri.parse("mailto:?subject=" + "Feedback" + "&body=" + "Write Feedback here....." + "&to=" + "someone@example.com");
                    testIntent.setData(data);
                    startActivity(testIntent);

0

실제로 사용자간에 앱을 깎는 가장 좋은 방법 인 Google (firebase)은 새로운 기술을 입증했습니다 Firebase Dynamic Link 여러 줄을 통해 만들 수있는 문서는 https://firebase.google.com/docs/dynamic-links/ 및 코드입니다. 이다

  Uri dynamicLinkUri = dynamicLink.getUri();
      Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLink(Uri.parse("https://www.google.jo/"))
            .setDynamicLinkDomain("rw4r7.app.goo.gl")
            .buildShortDynamicLink()
            .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
                @Override
                public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                    if (task.isSuccessful()) {
                        // Short link created
                        Uri shortLink = task.getResult().getShortLink();
                        Uri flowchartLink = task.getResult().getPreviewLink();
                        Intent intent = new Intent();
                        intent.setAction(Intent.ACTION_SEND);
                        intent.putExtra(Intent.EXTRA_TEXT,  shortLink.toString());
                        intent.setType("text/plain");
                        startActivity(intent);
                    } else {
                        // Error
                        // ...
                    }
                }
            });

0

공유 작업을위한 Kotlin 확장 프로그램입니다. 원하는 것을 공유 할 수 있습니다 (예 : 링크).

fun Context.share(text: String) =
    this.startActivity(Intent().apply {
        action = Intent.ACTION_SEND
        putExtra(Intent.EXTRA_TEXT, text)
        type = "text/plain"
    })

용법

context.share("Check https://stackoverflow.com")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.