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

 更新时间:2014年01月06日 15:16:40   作者:  
这篇文章主要介绍了android实现蓝牙文件发送的实例代码,有需要的朋友可以参考一下

最近项目上需要实现蓝牙传输apk的一个功能,能够搜索周围的蓝牙手机并分享文件。从需求上讲android手机自带的蓝牙传输模块就可以满足需要了,实现也很简单。不过让人头疼的是,虽然说一般的主流机型都配置有蓝牙模块,但是android机型碎片化太严重,不同android版本手机蓝牙功能也不一样。4.0.3以下版本和以上版本使用的蓝牙包是不同的,分别是"com.android.bluetooth"和"com.mediatek.bluetooth"。还有一些厂商对蓝牙模块进行的定制修改,比如华为的c8812。另外,android蓝牙功能是api5以上才有的,所以android的minSdkVersion要不低于5才行。

网上很多android调用蓝牙发送模块的例子,完整并且能够兼容多系统的例子很少,这里发一个我用在项目中的例子。

复制代码 代码如下:

     /**
     * 通过蓝牙发送文件
     */
    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);
    }

效果:

相关文章

  • Android快速实现一个财务APP程序详解

    Android快速实现一个财务APP程序详解

    这篇文章主要介绍了Android实现的财务APP程序,结合前后端共功能完善,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Android编程设置全屏的方法实例详解

    Android编程设置全屏的方法实例详解

    这篇文章主要介绍了Android编程设置全屏的方法,结合实例形式较为详细的分析了Android设置全屏的两种常见技巧,非常简单实用,需要的朋友可以参考下
    2015-11-11
  • Android中图片压缩的三种实现方法

    Android中图片压缩的三种实现方法

    在 Android 开发中,图片压缩是一个重要的优化手段,这篇文章为大家整理了几种主流的图片压缩方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • Flutter中数据库的使用教程详解

    Flutter中数据库的使用教程详解

    在Flutter开发过程中,有时需要对数据进行本地的持久化存储,使用sp文件形式虽然也能解决问题,但是有时数据量较大的时候,显然我们文件形式就不太合适了,这时候我们就需要使用数据库进行存储。本文将详细讲讲Flutter中数据库的使用,需要的可以参考一下
    2022-04-04
  • Kotlin文件读写与SharedPreferences存储功能实现方法

    Kotlin文件读写与SharedPreferences存储功能实现方法

    SharedPreferences是安卓平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出
    2022-12-12
  • Android屏幕分辨率工具类使用详解

    Android屏幕分辨率工具类使用详解

    这篇文章主要为大家详细介绍了Android屏幕分辨率工具类使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • android view转Bitmap生成截图的方法

    android view转Bitmap生成截图的方法

    这篇文章主要介绍了android view转Bitmap生成截图的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Android中GPS坐标转换为高德地图坐标详解

    Android中GPS坐标转换为高德地图坐标详解

    最近因为公司需求,在做GPS定位,并且将获得的坐标显示在高德地图上,但是实际效果跟我们期望的是有偏差的。通过查阅资料,才知道有地球坐标、火星坐标之说。下面这篇文章就详细介绍了Android中GPS坐标转换为高德地图坐标的方法,需要的朋友可以参考下。
    2017-01-01
  • Android 实现获取手机里面的所有图片详解及实例

    Android 实现获取手机里面的所有图片详解及实例

    这篇文章主要介绍了Android 实现获取手机里面的所有图片详解及实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • android自定义进度条渐变色View的实例代码

    android自定义进度条渐变色View的实例代码

    这篇文章主要介绍了android自定义进度条渐变色View的实例代码,有需要的朋友可以参考一下
    2014-01-01

最新评论