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

 更新时间:2014年01月06日 15:16:40   作者:  
这篇文章主要介绍了android实现蓝牙文件发送的实例代码,有需要的朋友可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

最近项目上需要实现蓝牙传输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基于zxing的二维码(网格)扫描 仿支付宝网格扫描

    Android基于zxing的二维码(网格)扫描 仿支付宝网格扫描

    这篇文章主要为大家详细介绍了Android基于zxing的二维码网格扫描,仿支付宝网格扫描,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 亲自动手编写Android通用刷新控件

    亲自动手编写Android通用刷新控件

    这篇文章主要记录了亲自动手编写Android通用刷新控件的详细过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 基于Flutter制作一个火箭发射动画

    基于Flutter制作一个火箭发射动画

    北京时间10月16日0时23分,神舟十三号飞船成功发射,为庆祝这一喜事,本文将用Flutter制作一个火箭发射动画,感兴趣的小伙伴可以动手试一试
    2022-03-03
  • Kotlin1.6.20新功能Context?Receivers使用技巧揭秘

    Kotlin1.6.20新功能Context?Receivers使用技巧揭秘

    这篇文章主要为大家介绍了Kotlin1.6.20功能Context?Receivers使用揭秘,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Android利用zxing生成二维码的过程记录

    Android利用zxing生成二维码的过程记录

    Android中二维码生成的最常用库就是zxing了,正好目前项目有了生成二维码的需求,所以下面这篇文章主要给大家介绍了关于Android利用zxing生成二维码的相关资料,需要的朋友可以参考下
    2021-07-07
  • Android中Canvas的常用方法总结

    Android中Canvas的常用方法总结

    在Android自定义View的时候,我们经常需要绘制一些自己想要的效果。这里就需要使用Canvas对象。下面这篇文章将Canvas对象常用方法做个笔记,方便自己和大家以后使用的时候查阅,下面来一起看看吧。
    2016-09-09
  • Jetpack?Compose重写TopAppBar实现标题多行折叠详解

    Jetpack?Compose重写TopAppBar实现标题多行折叠详解

    这篇文章主要为大家介绍了Jetpack?Compose重写TopAppBar实现标题多行折叠示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • APK包名修改 请问如何修改APK包名

    APK包名修改 请问如何修改APK包名

    今天,想在android手机上安装两个相同的应用,本以为可以安装不同版本的,试了几次,均相互覆盖了,于是,只能设法修改apk所对应的包名(package name),需要了解的朋友可以参考下
    2012-12-12
  • Android Studio 2020新版本卡在Gradle downloading/sync failed/下载缓慢/下载超时的问题

    Android Studio 2020新版本卡在Gradle downloading/sync failed/下载缓慢/

    Android Studio 2020新版本 卡在Gradle downloading / sync failed / 下载缓慢 / 下载超时 亲测有效解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-12-12
  • Android之RAS加密算法测试实例

    Android之RAS加密算法测试实例

    这篇文章介绍了Android之RAS加密算法测试实例,有需要的朋友可以参考一下
    2013-09-09

最新评论

?


http://www.vxiaotou.com