安卓 : Open google play dialog from my app

标签 android youtube dialog google-play installation

在 Android Youtube 应用程序中,当我点击广告时,会出现一个 Google Play 对话框,您可以从该对话框安装该应用程序。
通过 Activity 监视器,我发现了这个参数:
1 - com.android.vending
2 - com.google.android.finsky.activities.InlineAppDetailsDialog

我尝试设置一个 Uri "market://details?id=example.package",但没有成功。

这是我点击广告时打开的对话框。

enter image description here

最佳答案

根据您的发现和其他 Android 开发者的帮助,我得出的结论是,Play 商店应用的这项功能专供选定的 Google 合作伙伴使用。结论基于 com.google.android.finsky.activities.InlineAppDetailsDialog 的反编译代码,其中包含一个检查调用程序包的应用程序 ID 和签名的 开关。只有授权的应用才能显示此对话。

部分反编译代码如下:

switch (string2.hashCode()) {
            case 714499313: {
                if (!string2.equals("com.facebook.katana")) break;
                n2 = 0;
                break;
            }
            case 419128298: {
                if (!string2.equals("com.facebook.wakizashi")) break;
                n2 = 1;
                break;
            }
            case -649684660: {
                if (!string2.equals("flipboard.app")) break;
                n2 = 2;
                break;
            }
            case 1249065348: {
                if (!string2.equals("com.kakao.talk")) break;
                n2 = 3;
                break;
            }
            case 1153658444: {
                if (!string2.equals("com.linkedin.android")) break;
                n2 = 4;
                break;
            }
            case -583737491: {
                if (!string2.equals("com.pinterest")) break;
                n2 = 5;
                break;
            }
            case -928396735: {
                if (!string2.equals("com.test.overlay")) break;
                n2 = 6;
                break;
            }
            case 10619783: {
                if (!string2.equals("com.twitter.android")) break;
                n2 = 7;
                break;
            }
            case 1835489205: {
                if (!string2.equals("ru.yandex.weatherplugin")) break;
                n2 = 8;
                break;
            }
            case 19680841: {
                if (!string2.equals("ru.yandex.yandexnavi")) break;
                n2 = 9;
                break;
            }
            case 19650874: {
                if (!string2.equals("ru.yandex.yandexmaps")) break;
                n2 = 10;
                break;
            }
            case 1663191933: {
                if (!string2.equals("ru.yandex.yandexbus")) break;
                n2 = 11;
                break;
            }
            case 636981927: {
                if (!string2.equals("ru.yandex.metro")) break;
                n2 = 12;
                break;
            }
            case 647779725: {
                if (!string2.equals("ru.yandex.searchplugin")) break;
                n2 = 13;
                break;
            }
            case -143313792: {
                if (!string2.equals("ru.yandex.test.promolib")) break;
                n2 = 14;
                break;
            }
            case -2075712516: {
                if (!string2.equals("com.google.android.youtube")) break;
                n2 = 15;
                break;
            }
            case 1387611572: {
                if (!string2.equals("com.google.android.youtube.tv")) break;
                n2 = 16;
                break;
            }
            case 886484461: {
                if (!string2.equals("com.google.android.apps.youtube.kids")) break;
                n2 = 17;
                break;
            }
            case 1386399663: {
                if (!string2.equals("com.google.android.apps.youtube.gaming")) break;
                n2 = 18;
                break;
            }
            case 1713433253: {
                if (!string2.equals("com.google.android.apps.youtube.music")) break;
                n2 = 19;
                break;
            }
            case 1252744364: {
                if (!string2.equals("com.google.android.apps.youtube.creator")) break;
                n2 = 20;
                break;
            }
            case 304833084: {
                if (!string2.equals("com.google.android.apps.youtube.vr")) break;
                n2 = 21;
                break;
            }
            case 1712832578: {
                if (!string2.equals("com.google.android.apps.youtube.mango")) break;
                n2 = 22;
                break;
            }

尝试从测试应用程序启动此 Activity 时,我收到以下日志:

06-09 10:44:30.100 5180-5180/? W/Finsky: [2] com.google.android.finsky.activities.InlineAppDetailsDialog.onCreate(88): Called from untrusted package.

所以看起来至少在写这个答案时,不可能做你想做的事。我们希望这个功能将来能对第 3 方开放。

关于安卓 : Open google play dialog from my app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42734624/

相关文章:

android - RxJava 需要有关如何将 Firebase 实现为远程数据源的指导

在 Release模式下运行时,Android 按钮 ImageButton 不显示图像

php - PHP脚本强制下载YouTube视频

java - 如何在java中设置消息对话框的位置?

android - 在 RecyclerView 的 onBindViewHolder 中调用的自定义对话框按钮

android - 通过包名启动 Activity

Android Renderscript,从位图中删除白色/白色背景

python - 如何通过YouTube JSON响应有效地分页?

javascript - YouTube Player API无法完全加载?

android - Dialog.getContext() 和创建对话框的 Activity 之间有区别吗?