- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经实现了一项服务,该服务可监听通过 ADB 发出的命令。通过 ADB 发送的命令示例如下所示:
adb shell am startservice -a com.testandroid.SEND_SMS -e number 123123123 -e message "åäö"
现在,这里的问题是字符串“åäö”的编码似乎搞砸了。如果我把那个字符串附加并立即将它输出到日志,我会得到一个方 block “[]”,未知字符。如果我发送此消息,我会在消息应用程序中收到中文字符。只要我坚持使用非变音字符(我猜是 ASCII),一切正常。
为此,我正在使用 Windows 7 和命令行。我没有触及命令行的编码,我试图通过获取字节字符来处理额外字符串,将 UTF-8 作为编码参数传递,然后创建一个新的字符串作为编码参数传递 UTF-8那里也一样。不过,没有骰子。
使用 getBytes() 时字节的值是 å: -27, ä: -92, ö: -74
我如何让它发挥得更好,这样我至少可以利用变音符号?
所有这些在 Linux 中都运行良好。
最佳答案
我遇到了同样的问题,但终于成功了!
如果您使用例如 C#,则必须按照以下示例进行操作:
02.12.2019
根据protocol.txt , ADB-Protocol 支持“智能套接字”。这些套接字可以用来做所有的事情,adb.exe 中的 ADB-Client 可以。例如,如果你想上传一个文件,你必须请求这样一个“智能 socket ”。之后,您必须遵循分配给服务的协议(protocol)(有关服务概述,请参阅 SERVICE.txt),例如,在 SYNC.txt 中所述。 .
13.10.2014
public static List<string> ExecuteBG(string exe, string args, int timeOut = -1)
{
if (File.Exists(exe) || exe == "cmd.exe")
{
ProcessStartInfo StartInfo = new ProcessStartInfo();
StartInfo.FileName = exe;
StartInfo.Arguments = Encoding.Default.GetString(Encoding.UTF8.GetBytes(args));
StartInfo.CreateNoWindow = true;
StartInfo.UseShellExecute = false;
StartInfo.RedirectStandardError = true;
StartInfo.RedirectStandardOutput = true;
StartInfo.StandardErrorEncoding = Encoding.UTF8;
StartInfo.StandardOutputEncoding = Encoding.UTF8;
AutoResetEvent errorWaitHandle = new AutoResetEvent(false);
AutoResetEvent outputWaitHandle = new AutoResetEvent(false);
List<string> response = new List<string>();
Process proc = new Process();
proc.StartInfo = StartInfo;
proc.ErrorDataReceived += (s, e) =>
{
if (String.IsNullOrEmpty(e.Data))
{
errorWaitHandle.Set();
}
else
{
response.Add(e.Data);
}
};
proc.OutputDataReceived += (s, e) =>
{
if (String.IsNullOrEmpty(e.Data))
{
outputWaitHandle.Set();
}
else
{
response.Add(e.Data);
}
};
proc.Start();
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
proc.WaitForExit(timeOut);
errorWaitHandle.WaitOne(timeOut);
outputWaitHandle.WaitOne(timeOut);
return response;
}
return new List<string>();
}
真正重要的是这部分“StartInfo.Arguments = Encoding.Default.GetString(Encoding.UTF8.GetBytes(args));”,这里我们将 UTF8 字符串转换为 cmd 已知的 Windows“默认”字符集。所以我们向 cmd 发送一个“销毁”的“默认”编码字符串,Android shell 会将其转换回 UTF8。所以我们有像“üöäÜÖÄàè 等”这样的“变音符号”。
希望这对某人有帮助。
PS:如果您需要一个支持 UTF8 推/拉文件/文件夹的工作“框架”,还可以查看 my AndroidCtrl.dll它是用 C# .NET4 编写的。
问候,塞巴斯蒂安
关于android - 使用 ADB 发送消息的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038725/
使用 http://developer.android.com/training/basics/firstapp/running-app.html 上的指南,我使用 adb 将示例 Hello, Wo
如何修复 - 无法创建调试桥:无法启动 adb 服务器:无法检测 adb 版本,adb 输出:/home/dilip/Downloads/sdk/platform-tools/adb: 1:/home
我在 UBUNTU 18.x 操作系统上练习 REACT NATIVE,一切运行顺利,昨天我更新了我的 React native、react 和 android gradle 版本然后我收到一些错误,
这个问题在这里已经有了答案: android studio adb Syntax error: ")" unexpected (4 个答案) 关闭 5 年前。 我确实将我的工作室更新到 Linux
这是我的步骤: adb connect 'my android IP address' connected adb reboot //in this step my phone is rebootin
我有一个应用程序可以监听接收通知。安装后,我应该从设置 -> 安全 -> 通知访问启用通知访问 我在模拟器上安装这个应用程序并使用 ADB 运行它。但我不知道如何使用 ADB 中的命令行为其启用通知访
ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机). 它的主要功能
我知道这个问题被问了多次,也有一些替代答案。所以请不要关闭其他链接,因为我在下面添加了该链接。 [2014-01-23 16:19:44 - adb] ADB server didn't ACK [2
我在 adb 中观察到了这种新行为v1.0.39。命令: adb shell getevent -l 给出以下输出: 观察到最后一行是不完整的。这发生在许多不同的设备上。相同的命令在 adb 中无需缓
我正在尝试通过 adb shell am 和 adb shell service call 发送短信。我都收到错误消息。 a) 我正在尝试按照 adb shell am 命令发送短信 adb shel
由于某些原因,我的手机无法使用电缆。 我在 Internet 上看到可以通过 Wifi 将 adb 连接到 Wifi,但是我试了一下,结果是这样的: adb devices List of devic
尝试通过 expo 在模拟器上运行 react-native 应用程序时出现此错误。 Couldn't start project on Android: Error running adb: adb
这个问题在这里已经有了答案: adb server version doesn't match this client (41 个回答) 关闭4年前。 在启动 genymotion 模拟器后尝试从终
adb server version (39) doesn't match this client (40); killing... could not read ok from ADB Server
我已经创建了一个虚拟 Android 模拟器 (Nexus_5X_API25),我需要获得根访问权限。但是当我输入 adb remount 命令时,它总是告诉我 adb 没有以 root 身份运行。我
这个问题在这里已经有了答案: ADB - Android - Getting the name of the current activity (13 个答案) 关闭 4 年前。 我正在使用 adb
我只是想运行 adb shell,这样我就可以终止进程以进行测试。我在目录 platform-tools 中,adb 可执行文件就在那里。当我尝试运行 shell 时,它说找不到 adb 命令。我正在
我刚刚安装了 android studio 和平台工具,但我无法调用 adb,即使它们显然位于同一目录中。我收到此错误: zsh: command not found: adb 我是 android
以下命令用于使用 Android SDK 工具版本 24.4.1 退出模拟器。将工具版本更新到 25.1.6 后,它在 Mac 上停止工作。 adb -s emulator-5554 emu kill
我正在尝试 root 第 8 代 Kindle HD Fire (Fire OS 6.3.0.1)我已经打开了 Developer options,但是 Enable ADB 没有列在它下面。还有其他
我是一名优秀的程序员,十分优秀!