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本地存储方法浅析介绍

    Android本地存储方法浅析介绍

    这篇文章主要介绍了Android本地存储案例,方法简单可以实现存储并达到节省内存的效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • Android自定义PopupWindow简单小例子

    Android自定义PopupWindow简单小例子

    这篇文章主要为大家详细介绍了Android自定义PopupWindow简单小例子,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android中TextView和ImageView实现倾斜效果

    Android中TextView和ImageView实现倾斜效果

    这篇文章主要为大家详细介绍了Android中TextView和ImageView实现倾斜效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Kotlin协程概念原理与使用万字梳理

    Kotlin协程概念原理与使用万字梳理

    协程的作用是什么?协程是一种轻量级的线程,解决异步编程的复杂性,异步的代码使用协程可以用顺序进行表达,文中通过示例代码介绍详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-08-08
  • Android自定义圆形倒计时进度条

    Android自定义圆形倒计时进度条

    这篇文章主要为大家详细介绍了Android自定义圆形倒计时进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android LayoutTransiton实现简单的录制按钮

    Android LayoutTransiton实现简单的录制按钮

    这篇文章主要介绍了Android LayoutTransiton实现简单的录制按钮,主要实现开始,暂停,停止和显示录制时间长度,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 基于Android XML解析与保存的实现

    基于Android XML解析与保存的实现

    本篇文章小编为大家介绍,基于Android XML解析与保存的实现。需要的朋友参考下
    2013-04-04
  • Android开发基础使用ProgressBar加载进度条示例

    Android开发基础使用ProgressBar加载进度条示例

    这篇文章主要介绍了安卓开发基础使用ProgressBar加载进度条示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • android实现简单拍照功能

    android实现简单拍照功能

    这篇文章主要为大家详细介绍了android实现简单拍照功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android自定义控件LinearLayout实例讲解

    Android自定义控件LinearLayout实例讲解

    这篇文章主要为大家详细介绍了Android自定义控件LinearLayout实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05

最新评论