2

android 应用程序是否有可能在运行时创建自己的 apk 文件?

我希望我的应用程序能够通过蓝牙发送自己,我该怎么做?

4

5 回答 5

10

最好的方法是:

// Get current ApplicationInfo to find .apk path
ApplicationInfo app = getApplicationContext().getApplicationInfo();
String filePath = app.sourceDir;

Intent intent = new Intent(Intent.ACTION_SEND);

// MIME of .apk is "application/vnd.android.package-archive".
// but Bluetooth does not accept this. Let's use "*/*" instead.
intent.setType("*/*");

// Only use Bluetooth to send .apk
intent.setPackage("com.android.bluetooth");

// Append file and send Intent
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(filePath)));
startActivity(Intent.createChooser(intent, "Share app"));
于 2015-05-03T15:58:50.293 回答
2

终于我找到了答案!不需要制作应用程序的apk,因为android将apk文件保存在内存中,您可以使用PackageManager访问应用程序的apk文件,它会给出保存apk的位置,然后您可以通过蓝牙发送它!

于 2013-11-07T09:21:30.247 回答
1

最好的选择是将 .apk 文件放在资产中并从那里发送。

为了避免更新出现问题,您可以告诉您的应用在发送之前从某个服务器下载 .apk。(但是为什么要这样做,其他用户可以从市场上下载它?我很抱歉,但也许如果你解释了这个想法背后的原因,我们可以为你的选择给你一个更好的解释?)

您的 apk 文件是由您在 Eclipse 中的项目制作的。因此,实际上从应用程序中的这些文件构建 .apk 是荒谬的,而且可能是不可能的(您必须编写编译、构建过程......)

于 2013-08-29T22:28:50.303 回答
1

您最好的选择是简单地重定向到 Google Play 商店或您自己托管的 apk 版本。

您不能真正捆绑应用程序本身,因为共享的捆绑 apk 没有与下一个人共享的捆绑 apk,因此该功能在一次共享后中断。

如果您真的想拥有此功能,则必须在首次启动应用程序时将 apk(从您自己的服务器)下载到共享存储。下载后,您可以启用“通过蓝牙发送”功能。

于 2013-08-29T22:51:45.840 回答
0

您可以使用PackageManager获取应用程序 APK 的路径,然后在 aACTION_SEND Intent中使用该路径通过蓝牙发送文件。

在这里查看示例: Android 上的蓝牙文件传输(甚至受限类型)

于 2014-02-14T22:54:52.430 回答