源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

android实现蓝牙文件发送的实例代码,支持多种机型

  • 时间:2022-07-24 19:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:android实现蓝牙文件发送的实例代码,支持多种机型
最近项目上需要实现蓝牙传输apk的一个功能,能够搜索周围的蓝牙手机并分享文件。从需求上讲android手机自带的蓝牙传输模块就可以满足需要了,实现也很简单。不过让人头疼的是,虽然说一般的主流机型都配置有蓝牙模块,但是android机型碎片化太严重,不同android版本手机蓝牙功能也不一样。4.0.3以下版本和以上版本使用的蓝牙包是不同的,分别是"com.android.bluetooth"和"com.mediatek.bluetooth"。还有一些厂商对蓝牙模块进行的定制修改,比如华为的c8812。另外,android蓝牙功能是api5以上才有的,所以android的minSdkVersion要不低于5才行。 网上很多android调用蓝牙发送模块的例子,完整并且能够兼容多系统的例子很少,这里发一个我用在项目中的例子。
[u]复制代码[/u] 代码如下:
     /**      * 通过蓝牙发送文件      */     private void sendFile(Activity activity) {         PackageManager localPackageManager = activity.getPackageManager();         Intent localIntent = null;         HashMap<String, ActivityInfo> localHashMap = null;         try {             localIntent = new Intent();             localIntent.setAction(Intent.ACTION_SEND);             File file = new File(TAExternalOverFroyoUtils.getDiskCacheDir(this,                     Constants.DOWNLOAD_DIR).getAbsolutePath(),                     TextUtils.genApkName(worm.getWormid()));             localIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));             // localIntent.putExtra(Intent.EXTRA_STREAM,             // Uri.fromFile(new File(localApplicationInfo.sourceDir)));             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;                 if (str.contains("bluetooth"))                     localHashMap.put(str, localActivityInfo2);             }         } catch (Exception localException) {             ToastHelper.showBlueToothSupportErr(activity);         }         if (localHashMap.size() == 0)             ToastHelper.showBlueToothSupportErr(activity);         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();         }         if (localActivityInfo1 != null) {             localIntent.setComponent(new ComponentName(                     localActivityInfo1.packageName, localActivityInfo1.name));             activity.startActivityForResult(localIntent, 4098);             return;         }         ToastHelper.showBlueToothSupportErr(activity);     }
效果: [img]http://files.jb51.net/file_images/article/201401/201416151751218.png[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部