【问题标题】:Android : Open google play dialog from my appAndroid:从我的应用程序打开 google play 对话框
【发布时间】:2017-08-01 18:09:50
【问题描述】:
从 Android Youtube 应用程序中,当我点击广告时,会出现一个 Google Play 对话框,您可以从该对话框中安装该应用程序。
通过活动监视器,我发现了以下参数:
1 - com.android.vending
2 - com.google.android.finsky.activities.InlineAppDetailsDialog
我尝试设置一个 Uri "market://details?id=example.package",但没有成功。
这是我点击广告时打开的对话框。
【问题讨论】:
标签:
android
youtube
dialog
google-play
installation
【解决方案1】:
根据您的发现和其他 Android 开发人员的帮助,我得出的结论是,Play 商店应用的此功能仅供部分 Google 合作伙伴使用。结论基于com.google.android.finsky.activities.InlineAppDetailsDialog 的反编译代码,其中包括检查调用包的应用程序ID 和签名的switch。只有经过授权的应用才能显示此对话框。
这是反编译的部分代码:
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;
}
尝试从测试应用启动此活动时,我收到以下日志:
06-09 10:44:30.100 5180-5180/? W/Finsky: [2] com.google.android.finsky.activities.InlineAppDetailsDialog.onCreate(88): Called from untrusted package.
因此,至少在撰写此答案时,似乎不可能做你想做的事。让我们希望此功能将来会向第 3 方开放。