我正在制作一个应用程序,我想在其中添加一项功能以通过蓝牙发送 apk 文件。它不允许通过传统方法,因为 apk 是受限制的文件类型,所以我使用了 BluetoothShare.java。显然它不适用于果冻豆。我得到一个令人讨厌的安全异常。和这个一样。Android 蓝牙打印在 4.1 上停止工作
如果可能的话,我有什么办法可以做到这一点?
我正在制作一个应用程序,我想在其中添加一项功能以通过蓝牙发送 apk 文件。它不允许通过传统方法,因为 apk 是受限制的文件类型,所以我使用了 BluetoothShare.java。显然它不适用于果冻豆。我得到一个令人讨厌的安全异常。和这个一样。Android 蓝牙打印在 4.1 上停止工作
如果可能的话,我有什么办法可以做到这一点?
将 .apk 重命名为 .zip 并发送,然后在手机上将其重命名为 .apk。
通过将 MIME 类型更改Intent
为application/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
)。
以下是处理方法: