Android 4.4 - 发送短信通用故障 - 服务蓝牙链接

时间:2016-05-15 13:31:03

标签: c# android

我想知道是否有人可以指出我正确的方向。我正在编写Android 4.4应用程序。我有一个服务正在运行侦听从同一服务启动的线程上的连接。如果我运行以下它可以工作:

async Task SendSMSAsync(string TextMessage)
{
await Task.Run(() =>
{
PendingIntent sentIntent = PendingIntent.GetBroadcast(this.context, 0, new Intent("SMS_SENT"), 0);
PendingIntent deliveredIntent = PendingIntent.GetBroadcast(this.context, 0, new Intent("SMS_DELIVERED"), 0);
SmsManager.Default.SendTextMessage(Chris, null, "This is a Test", sentIntent, deliveredIntent);
});
}

但是,如果我将String传递给SendTextMessage方法。我得到了一般失败。

activity.bluetoothSocket.InputStream.Read(buffer, 0, buffer.Length);
string TextMessage = System.Text.Encoding.UTF8.GetString(buffer);
...
SmsManager.Default.SendTextMessage(Chris, null, TextMessage sentIntent, deliveredIntent);

我的字符串只有10个字符。

buffer = System.Text.Encoding.UTF8.GetBytes(activity.DataReceivedString);
activity.writeData();

我找回了正确的字符串。

'Chris'是一个字符串,这是我的硬编码编号,不会改变。

这很奇怪。

1 个答案:

答案 0 :(得分:1)

嗯,很奇怪,答案是缓冲区:

private byte[] buffer = new byte[157]; // 160 was supposed to be the limit...

我放下了尺寸:

private byte[] buffer = new byte[70];

现在它有效。

糟糕的文档是混淆的来源:Android.Telephony.SmsManager.SendTextMessage Method