2013-04-29 1 views
3

Я делал приложение, в котором хотел добавить функцию для отправки файлов apk через bluetooth. Его нельзя разрешить с помощью традиционного метода, поскольку apk является ограниченным типом файла, поэтому я использовал BluetoothShare.java. По-видимому, это не работает на Jellybean. Я получаю неприятное исключение безопасности. То же самое, что и этот. Android bluetooth print stopped working on 4.1Передача файлов Bluetooth на Android (даже ограниченные типы)

Есть ли способ, которым я могу это сделать, если это возможно?

ответ

3

переименуйте .apk в .zip и отправьте его, а затем переименуйте его обратно в .apk по телефону.

+0

хорошо я Сорта сделал это, я использовал ZipOutputStream проноситься файлы, а затем отправить их. –

+0

Можете ли вы дать небольшой образец этого 'ZipOutputStream'? – RoCk

3

Я смог получить запас Nexus 7 с 4.4.2 для отправки APK, изменив тип MIME в Intent на application/zip. Но это не изменило блок при получении APK. Но поскольку многие/большинство ПЗУ удаляют этот блок, все же полезно иметь возможность отправлять 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(); 
} 

Это простой пример, потому что он направлен только один Bluetooth Activity, что я вижу на моих двух устройств (com.android.bluetooth.opp.BluetoothOppLauncherActivity). К сожалению, активность не всегда называется (например, com.broadcom.bt.app.opp.OppLauncherActivity), и даже имя пакета может быть другим (например, com.mediatek.bluetooth).

Вот как справиться с этим:

 Смежные вопросы

  • Нет связанных вопросов^_^