可以使用<uses-library>来检查是否安装了应用程序以及如何安装应用程序?与共享库相反?</uses-library>

时间:2012-05-19 20:38:33

标签: android installation package manifest

我有一个应用小部件项目,它依赖于安装相应的应用程序。

因此,所需应用程序的密码名称为

com.radlmaier.saintscalendar

在app小部件清单中,我在标记内有以下标记:

<uses-library android:name="com.radlmaier.saintscalendar" android:required="true" />

现在,当未安装应用程序时,窗口小部件安装将失败,应该如此。 但是如果安装了应用程序,则小部件安装也会失败,logcat会说:

05-19 22:28:35.359: E/PackageManager(14680): Package com.radlmaier.saintscalendarwidget requires unavailable shared library com.radlmaier.saintscalendar; failing!

我显然在这里遗漏了一些东西。 是否无法使用标记来检查已安装的软件包而不是共享库? 有人可以开导我吗?

2 个答案:

答案 0 :(得分:1)

  

是否无法使用标记来检查已安装的软件包而不是共享库?

这绝对不可能。 <uses-library>用于要求SDK插件(例如Google地图)。

  

我有一个应用小部件项目,它依赖于安装相应的应用程序。

Android不是应用程序依赖机制,所以如果你想要这个,你必须自己滚动它。就个人而言,我建议简单地将这些组合成一个应用程序。

答案 1 :(得分:0)

试试这个:

Intent myIntent = new Intent(Intent.ACTION_MAIN).setClassName("com.radlmaier.saintscalendar", "com.radlmaier.saintscalendar.yourclassname");
boolean isInstalled = getPackageManager().queryIntentActivities(myIntent, 0).size() > 0;

如果未安装,并且您想将它们发送到Play商店进行安装,请尝试以下操作:

Intent marketIntent = new Intent(Intent.ACTION_VIEW);
marketIntent.setData(Uri.parse("market://search?q=pname:com.radlmaier.saintscalendar"));
startActivity(marketIntent);