利用藍芽來傳送圖片等檔案
最近在研究藍芽,藍芽裝置間傳輸訊息可以通過BluetoothAdapter的startDiscovery方法來搜尋裝置,得到device的address,然後利用反射呼叫BluetoothDevice 的createBond方法來進行配對,然後就可以得到socket然後進行連線了,比較麻煩。
在網上找到一種通過呼叫系統api用藍芽進行傳輸的方法,在這裡分享一下。
/**
* 通過藍芽傳送檔案
*/
private void sendFile(Activity activity, File file) {
PackageManager localPackageManager = activity.getPackageManager();
Intent localIntent = null;
HashMap<String, ActivityInfo> localHashMap = null;
try {
localIntent = new Intent();
localIntent.setAction(Intent.ACTION_SEND);
// localIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(mPathList.get(mCurrentPosition))));
localIntent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(getApplicationContext(), getPackageName() + ".provider", file));
localIntent.setType("*/*");
List<ResolveInfo> localList = localPackageManager.queryIntentActivities(
localIntent, 0);
localHashMap = new HashMap<String, ActivityInfo>();
Iterator<ResolveInfo> localIterator1 = localList.iterator();
while (localIterator1.hasNext()) {
ResolveInfo resolveInfo = (ResolveInfo) localIterator1.next();
ActivityInfo localActivityInfo2 = resolveInfo.activityInfo;
String str = localActivityInfo2.applicationInfo.processName;
Log.e("bluetooth", "processName " + str);
if (str.contains("bluetooth"))
localHashMap.put(str, localActivityInfo2);
}
} catch (Exception localException) {
}
ActivityInfo localActivityInfo1 = (ActivityInfo) localHashMap
.get("com.android.bluetooth");
if (localActivityInfo1 == null) {
localActivityInfo1 = (ActivityInfo) localHashMap
.get("com.mediatek.bluetooth");
}
if (localActivityInfo1 == null) {
Iterator<ActivityInfo> localIterator2 = localHashMap.values().iterator();
if (localIterator2.hasNext())
localActivityInfo1 = (ActivityInfo) localIterator2.next();
}
Log.e("bluetooth", "packageName" + localActivityInfo1.packageName + "name" + localActivityInfo1.name);
if (localActivityInfo1 != null) {
localIntent.setComponent(new ComponentName(
localActivityInfo1.packageName, localActivityInfo1.name));
activity.startActivityForResult(localIntent, 4098);
return;
}
}
原理就是通過ACTION_SEND這個action的intent得到所有能傳輸的系統程式,然後找出藍芽程式,通過setComponent設定intent然後跳轉過去。在6.0系統上跳轉的activity是com.android.bluetooth.opp.BluetoothOppLauncherActivity
相關文章
- 在silverlight中利用socket傳送圖片或檔案
- win10如何用藍芽傳送檔案 win10藍芽連線怎麼傳輸檔案Win10藍芽
- ubuntu20.04怎麼使用藍芽連線手機互傳檔案?ubuntu連線藍芽手機傳檔案的技巧Ubuntu藍芽
- 安裝配置管理 之 Fedora 6.0 藍芽bluebooth傳送檔案的問題解決方法藍芽boot
- 利用html5 file api讀取本地檔案(如圖片、PDF等)HTMLAPI
- CURL 傳送檔案
- PHP實現圖片(檔案)上傳PHP
- Ueditor上傳圖片自動新增水印(通用圖片檔案)
- 利用Python講多張圖片合成PDF檔案Python
- 傳送帶圖片的郵件
- Ueditor 上傳圖片自動新增水印(只能上傳圖片,上傳檔案報錯)
- Linux伺服器上傳檔案傳送檔案Linux伺服器
- win10藍芽根據策略禁用了檔案傳輸處理方法Win10藍芽
- 高仿QQ 傳送圖片高亮HaloProgressViewView
- C# Socket 檔案傳送傳輸C#
- 移動端檔案、圖片及拍照上傳
- FileReader()讀取檔案、圖片上傳預覽
- Win10系統下藍芽無法傳輸檔案怎麼解決Win10藍芽
- 利用webuploader外掛上傳圖片檔案,完整前端示例demo,服務端使用SpringMVC接收Web前端服務端SpringMVC
- 上傳封面圖片前臺不顯示 Picture檔案裡可以看到上傳的圖片
- Android 傳統藍芽開發Android藍芽
- 請問上傳的檔案如何傳送post
- [筆記]laravel的上傳檔案或者圖片的方法筆記Laravel
- IM 聊天教程:傳送圖片 / 影片 / 語音 / 表情
- python: 傳送內容帶圖片的郵件Python
- 利用vue-cropper剪裁圖片並上傳Vue
- Mac系統遇到藍芽檔案傳輸失敗不支援的項該怎麼辦?Mac藍芽
- Win10系統怎麼通過藍芽與手機進行檔案傳輸Win10藍芽
- Win10系統怎麼透過藍芽與手機進行檔案傳輸Win10藍芽
- 如何安全共享和傳送大檔案?
- 圖片等檔案上傳到阿里雲的STS臨時授權訪問的配置詳解阿里
- [Laravel Admin] 檔案 / 圖片上傳功能之擴充套件 -- 上傳新圖且保留原圖Laravel套件
- SpringBoot專案實現檔案上傳和郵件傳送Spring Boot
- Spring Boot MVC 單張圖片和多張圖片上傳 和通用檔案下載Spring BootMVC
- thinkphp5 後臺上傳圖片提示 image null 非法上傳檔案PHPNull
- 線上直播原始碼,js 檔案上傳 圖片上傳 傳輸速度計算原始碼JS
- IM 聊天教程:傳送圖片 / 視訊 / 語音 / 表情
- 圖片寫入pdf檔案
- 焦急!我需要儘快傳送大檔案!