我正在尝试在针对我的应用的游戏商店链接(在网页上)打开我的应用。我尝试了以下的intent-filters,但是我无法使用它:
HTTPS链接
<intent-filter>
<!-- Catch web intents for Google Play Store -->
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="play.google.com"/>
<!--<data android:path="/store/apps/details?id=my.app"/>-->
<data android:scheme="https"/>
<data android:scheme="http"/>
</intent-filter>
问题在于Play商店总是被打开。我试图重置它的设置以删除“默认操作”,但没有运气。在我的应用程序页面上浏览并点击地址栏中的小型Android图标时,我有使用ADB shell($ am start -a android.intent.action.VIEW -d https://play.google.com/store/apps/details?id=my.app
)或Firefox手机的意图的行为。使用该配置,我应该捕获所有Play商店意图(因为我评论了路径)但事实并非如此。它是否覆盖了选择对话框?
市场链接
<intent-filter>
<!-- Catch Google Play Store intents for FB Messenger -->
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="market"/>
<data android:host="details"/>
</intent-filter>
对于第二个意图,我成功地抓住了它,但我找不到一种方法来使它特定于我的应用程序。我试着玩其他领域,但没有运气。 ($ am start -a android.intent.action.VIEW -d market://details?id=my.app
)
所以最后,我的问题是:“如何从针对my.app包的网页拦截所有'开放游戏商店'意图,无论是市场://详细信息......还是{{3} } ... URIs?“
答案 0 :(得分:0)
只需用app store link打开应用程序。如果安装,将打开应用程序。如果应用程序未安装,您将被重定向到Playstore。
if(ReykjavikUtils.isPackageInstalled("com.whatsapp" , MainActivity.this)){
Intent i = getPackageManager().getLaunchIntentForPackage("com.whatsapp");
startActivity(i);
} else
{
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.whatsapp");
}
public static boolean isPackageInstalled(String packageName, Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}