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

时间:2023-08-17 11:07:56 

最近项目上需要实现蓝牙传输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,蓝牙文件发送
0
投稿

猜你喜欢

  • Android中执行java命令的方法及java代码执行并解析shell命令

    2022-08-27 15:45:13
  • Java线程同步、同步方法实例详解

    2023-10-16 07:10:53
  • 浅谈java中对集合对象list的几种循环访问

    2022-02-11 02:32:33
  • C#从DataTable获取数据的方法

    2022-09-16 03:20:59
  • 解决CollectionUtils.isNotEmpty()不存在的问题

    2021-11-15 12:03:17
  • Spring依赖注入(DI)两种方式的示例详解

    2021-09-14 12:00:20
  • SpringBoot+redis配置及测试的方法

    2022-11-21 04:12:52
  • springboot集成shiro权限管理简单实现

    2023-10-27 13:39:02
  • Android app应用多语言切换功能实现

    2023-12-27 22:06:27
  • Unity打包代码到DLL的实现

    2022-06-28 08:38:17
  • C#自定义缓存封装类实例

    2023-10-15 09:24:27
  • Android设置项目为系统APP方法

    2022-11-16 08:55:02
  • 解决android studio 打开java文件 内容全变了的问题

    2022-03-18 19:31:44
  • 使用JMX连接JVM实现过程详解

    2022-07-25 23:05:45
  • AOP从静态代理到动态代理(Emit实现)详解

    2023-11-27 14:49:56
  • JAVA发送HTTP请求的多种方式详细总结

    2021-06-15 14:43:48
  • 遍历文件系统目录树的深入理解

    2022-09-15 20:03:46
  • C#程序加密工具.Net Reactor详细教程

    2021-07-27 18:08:39
  • C#实现把科学计数法(E)转化为正常数字值

    2022-09-06 23:41:47
  • mybatis insert返回主键代码实例

    2022-04-08 02:24:01
  • asp之家 软件编程 m.aspxhome.com