0

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

因此,所需应用程序的包名称是

com.radlmaier.saintscalendar

在应用程序小部件清单中,我在标签内有以下标签:

<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!

我显然在这里遗漏了一些东西。与共享库相比,是否不能使用标签来检查已安装的包?有人可以启发我吗?

4

2 回答 2

1

与共享库相比,是否不能使用标签来检查已安装的包?

那肯定是不可能的。<uses-library>用于需要 SDK 插件(例如,谷歌地图)。

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

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

于 2012-05-19T20:48:29.907 回答
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);
于 2012-05-20T01:51:17.110 回答