当前位置:首页 > 行业动态 > 正文

安卓开发发送数据

安卓数据发送常见方式

HTTP/HTTPS 网络请求

  • 适用场景:与服务器通信、API调用、文件上传下载
  • 核心工具OkHttpRetrofitVolley
  • 关键步骤
    • 添加网络权限:<uses-permission android:name="android.permission.INTERNET"/>
    • 配置SSL(HTTPS需忽略证书验证时):
      OkHttpClient client = new OkHttpClient.Builder()
          .sslSocketFactory(trustManager.getSSLSocketFactory()) // 自定义信任管理器
          .build();

Intent 应用内通信

  • 适用场景:Activity/Service间传递数据、广播事件
  • 两种类型
    | 类型 | 特点 |
    |————|———————————————————————-|
    | 显式Intent | 指定目标组件(如com.example.MyReceiver) |
    | 隐式Intent | 通过Action/Category匹配接收者(如ACTION_SEND) |
  • 数据传递
    Intent intent = new Intent();
    intent.putExtra("key", "value"); // 基本类型
    intent.putExtra("image", bitmap); // Parcelable对象

蓝牙传输

  • 适用场景:设备间近距离通信
  • 关键流程
    1. 开启蓝牙并搜索设备
    2. 建立BluetoothSocket连接
    3. 通过InputStream/OutputStream发送数据
  • 权限要求
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

短信发送

  • 适用场景:通过运营商网络发送文本
  • 核心APISmsManager
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage("123456789", null, "Hello", null, null);
  • 权限要求SEND_SMS(需动态申请)

代码实现示例

OkHttp GET请求

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
    .url("https://api.example.com/data")
    .build();
client.newCall(request).enqueue(new Callback() {
    @Override public void onFailure(Call call, IOException e) { / 处理失败 / }
    @Override public void onResponse(Call call, Response response) throws IOException {
        String result = response.body().string();
        // 切换主线程更新UI
    }
});

Retrofit POST请求

public interface ApiService {
    @POST("/upload")
    Call<ResponseBody> upload(@Body RequestBody body);
}
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.example.com")
    .addConverterFactory(GsonConverterFactory.create())
    .build();
ApiService service = retrofit.create(ApiService.class);

广播发送与接收

// 发送广播
Intent intent = new Intent("com.example.CUSTOM_BROADCAST");
sendBroadcast(intent);
// 接收器注册(静态/动态)
public class MyReceiver extends BroadcastReceiver {
    @Override public void onReceive(Context context, Intent intent) {
        // 处理广播
    }
}

数据发送方式对比表

方式 协议层 适用场景 需权限 需网络
HTTP/HTTPS 应用层 服务器通信 INTERNET
Bluetooth 蓝牙协议 设备间近距离传输 BLUETOOTH系列
SMS 电信协议 短信文本传输 SEND_SMS
Intent Android内部 应用内组件通信

相关问题与解答

Q1: 如何保证HTTP请求的安全性?

A1

  • 强制使用HTTPS协议(配置服务器SSL证书)
  • 客户端验证证书有效性(避免中间人攻击)
  • 对敏感数据进行加密(如AES加密后传输)
  • 示例(忽略证书验证,仅开发环境使用):
    TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){...}};
    OkHttpClient client = new OkHttpClient.Builder()
        .sslSocketFactory(trustManager.getSSLSocketFactory(), trustAllCerts[0])
        .build();

Q2: 除了Intent,还有哪些跨进程通信方式?

A2
| 方式 | 特点 |
|——————–|———————————————————————-|
| Messenger | 基于AIDL的轻量级消息机制,适合单向通信 |
| ContentProvider | 共享数据接口,支持多进程读写(如访问联系人数据库) |
| BroadcastReceiver| 系统级事件通知,适合解耦模块 |
| AIDL | Android接口定义语言,支持复杂对象双向传输(需实现.aidl文件)

0