如何在Android应用程序中接受蓝牙接收文件?

时间:2012-04-11 09:41:31

标签: android file bluetooth

我想实现一个应用程序从蓝牙设备接收文件

在收到之前,会发出通知以接受传入的文件请求。

从那里,我想激活“接受”并自动下载文件,而不会在用户从另一台蓝牙配对设备接收到第二个文件时提出接受对话框,而在用户启动应用程序时没有通知干扰。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用Bluetooth socket连接来设置客户端服务器TCP,例如连接。

答案 1 :(得分:1)

我开发了一个包含此类任务的应用,您可以使用BluetoothChat示例。 您必须将安全标志设置为false: ` boolean secure = false;

        try {
            if (secure) {
                tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE,
                    MY_UUID_SECURE);
            } else {
                tmp = mAdapter.listenUsingInsecureRfcommWithServiceRecord(
                        NAME_INSECURE, MY_UUID_INSECURE);
            }
        } catch (IOException e) {
            Log.e(TAG, "Socket Type: " + mSocketType + "listen() failed", e);

        mmServerSocket = tmp;
    }`

然后从InputStream中读取您可以在ConnectedThread中找到的缓冲区:

while (true) {
            try {

                bytes = mmInStream.read(buffer);
                 /*write bytes in a file*/


            } catch (IOException e) {
                Log.e(TAG, "disconnected", e);
                connectionLost();

                BluetoothChatService.this.start();
                break;
            }
        }

答案 2 :(得分:0)

已启用的设备,您仅可以在手机上安装两个应用即可实现目标。

  1. XPosed安装程序
  2. 自动接受

通过这种方式钩住系统服务。

import android.util.*;
import de.robv.android.xposed.*;
import de.robv.android.xposed.callbacks.XC_LoadPackage.*;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;

public class Tutorial implements IXposedHookLoadPackage
{

    private String TAG="TUTORIAL";
    public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
        if (!lpparam.packageName.equals("com.android.bluetooth"))
        {
            Log.i(TAG,"Not: "+lpparam.packageName);
            return;
        }
        Log.i(TAG,"Yes "+lpparam.packageName);  

        findAndHookMethod("com.android.bluetooth.opp.BluetoothOppManager", lpparam.classLoader, "isWhitelisted", String.class,new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    Log.v(TAG,"HOOK DONE");
                    param.setResult(true); /* you can compare the sender address(String) with your computer and determine if you return true or just allow the original method to be called after this returns.*/

                }
            });

    }
}

有关更多信息,请访问SO中的my answer

我将在此处发布一些直接链接。

链接

Dropbox link of the auto accepting app

Dropbox link of the project files (zip)

Xposed apk site

Towelroot site to root your phone

Auto-Accept github repository