如何创建可以作为APK或从市场安装的Android应用程序插件/扩展?

时间:2012-11-30 11:37:59

标签: android

我实际上正在调查是否有可能满足以下要求的应用程序:

  • 主应用程序可能有5个已停用的功能
  • 如果您尝试使用已停用的功能,则应用程序会邀请您下载可以作为APK或从市场安装的扩展程序。
  • 安装功能后,它将被激活,然后可以使用它。

所以我们可以有一些免费/非免费的功能。我在某些应用程序中已经看到过这种行为,但我不记得这个名字。

Android SDK中是否有东西可供使用?如何实施?

感谢您的帮助。

4 个答案:

答案 0 :(得分:5)

不确定这是否是您要找的,但是让我建议让您入门(可能

例如,例如,在您的应用程序中,您有2个按钮(而不是5个)

BUTTON 1和BUTTON 2。

当您启动应用程序时,使用PackageManager

检查是否安装了必要的应用程序(您自己的应用程序的第三方)

这是我在我的应用中使用的伪代码,用于检查用户设备上是否安装了Google地图:

boolean installedMaps = false;

// CHECK IF AN APPLICATION IS INSTALLED
PackageManager pkManager = getPackageManager();
try {
    PackageInfo pkInfo = pkManager.getPackageInfo("com.google.android.apps.maps", 0); // REPLACE THIS "com.google.android.apps.maps" WITH THE ACTUAL PACAKAGE NAME
    // Log.e("pkInfo", pkInfo.toString());
    installedMaps = true;
} catch (NameNotFoundException e) {
    e.printStackTrace();
    installedMaps = false;
}

如果boolean installedMaps返回 true ,请启用该按钮。否则,提示用户使用Dialog从Google Play下载应用程序。

为激活或取消激活所需的每个功能执行此操作。

注意:您需要知道其他应用程序的包名称。如果您不了解它,可以通过在您的设备上运行应用程序并检查logcat来找到它。

如果您还需要在所有相关应用程序之间共享内容,您也可以考虑使用Content Providers

同样,我不完全确定这是否是您正在寻找的。如果我的假设错了,请更正。

答案 1 :(得分:4)

您可以使用服务创建apks并使用http://developer.android.com/guide/components/aidl.html连接到此服务。而且这项服务可以做你想要的,所以只有你的想象力才是你的极限;-)

我建议您阅读以下内容:http://developer.android.com/guide/topics/manifest/manifest-element.html#uid可以在2个或更多应用之间共享更多数据。但他们应该用相同的钥匙唱出来。

答案 2 :(得分:3)

您必须构建6个不同的应用程序/ apks并将其提交到Play商店。并且至少有两个选项可以将应用集成在一起:

  1. 如果您的功能全屏显示,则只需从插件应用中启动适当的活动。
  2. 如果主屏幕(来自主应用程序的主屏幕)应该包含代码(功能),来自插件应用程序(布局,图像等)的资源,而不是http://developer.android.com/guide/topics/manifest/manifest-element.html#uid。使用该配置,您可以通过类名反射从插件应用程序访问代码。
  3. 您还可以使用Resources res = mPackageManager.getResourcesForApplication(“org.example.foo”)从其他apk访问资源; 有关详细信息,请参阅Is it possible to access resources in another APK without using content providers?

答案 3 :(得分:1)

首先 - “附加功能”究竟是什么意思。问题非常复杂。

  1. 检查应用程序是否存在 - 只需使用PackageManager并尝试找到所需的包,如果没有请求用户进行安装即可使用它。
  2. 资源访问(图像,布局等) - 同时使用PackageManager
  3. 使用代码的某些部分 - 许多不同的方法来获得效果。意图(startActivityForResult()),内容提供者。
  4. 推出免费/付费功能的更好方法只是使用应用内付款。