我已經爲我的Android應用程序(比如說myapp://主機)註冊了url方案。以編程方式檢測Android上是否安裝了應用程序
在我的其他應用程序中,我可以通過使用Intent啓動該應用程序,但是如何檢查第一個應用程序是否已安裝而不啓動它?
iOS中,它是那麼容易,因爲
[[UIApplication sharedApplication] canOpenUrl:@"myapp://"];
有Android中的等價? (簡單的方法)
我想檢查使用網址方案。我知道如何使用包名來檢查,但我不知道如何從PackageInfo獲得url方案,以及...(較硬的方式)
PackageManager pm = m_cContext.getPackageManager();
boolean installed = false;
try {
@SuppressWarnings("unused")
PackageInfo pInfo = pm.getPackageInfo(szPackageName, PackageManager.GET_ACTIVITIES);
installed = true;
}
catch (PackageManager.NameNotFoundException e) {
installed = false;
}
提前感謝!
注:這是同一個問題的適用於iOS的Android版本:0Detecting programmatically whether an app is installed on iPhone
這通常會起作用,但是可能有多個活動可以處理URL,所以最好真正檢查包名('ResolveInfo.activityInfo.packageName')。由於供應商爲避免(像往常一樣,有問題的)Applet專利所做的一些變化,情況變得更加複雜。這裏有更多的細節:http://commonsware.com/blog/2012/07/24/linkify-problem-detection-mitigation.html –