3

我正在制作一个应用程序,我想在其中添加一项功能以通过蓝牙发送 apk 文件。它不允许通过传统方法,因为 apk 是受限制的文件类型,所以我使用了 BluetoothShare.java。显然它不适用于果冻豆。我得到一个令人讨厌的安全异常。和这个一样。Android 蓝牙打印在 4.1 上停止工作

如果可能的话,我有什么办法可以做到这一点?

4

2 回答 2

3

将 .apk 重命名为 .zip 并发送,然后在手机上将其重命名为 .apk。

于 2013-05-10T11:03:13.353 回答
3

通过将 MIME 类型更改Intentapplication/zip. 但这仍然没有改变接收 APK 的障碍。但是由于许多/大多数 ROM 删除了该块,因此能够从库存 ROM 发送 APK 仍然很有用。

PackageManager pm = getPackageManager();
ApplicationInfo appInfo;
try {
    appInfo = pm.getApplicationInfo("org.fdroid.fdroid",
            PackageManager.GET_META_DATA);
    Intent sendBt = new Intent(Intent.ACTION_SEND);
    // NOT THIS! sendBt.setType("application/vnd.android.package-archive");
    sendBt.setType("application/zip");
    sendBt.putExtra(Intent.EXTRA_STREAM,
            Uri.parse("file://" + appInfo.publicSourceDir));
    sendBt.setClassName("com.android.bluetooth",
            "com.android.bluetooth.opp.BluetoothOppLauncherActivity");
    startActivity(sendBt);
} catch (NameNotFoundException e1) {
    e1.printStackTrace();
}

这是一个简单的示例,因为它只针对Activity我在两台设备上看到的一个蓝牙 ( com.android.bluetooth.opp.BluetoothOppLauncherActivity)。不幸的是,Activity 并不总是调用它(例如,com.broadcom.bt.app.opp.OppLauncherActivity),甚至包名称也可能不同(例如,com.mediatek.bluetooth)。

以下是处理方法:

于 2014-02-14T22:51:57.560 回答