我的应用程序在安装应用程序时需要备用联系人.当我运行安装和注册应用程序时,默认情况下新设备中没有联系人.
我找到了一个adb命令来在联系人列表中添加联系人
adb shell am start -a android.intent.action.INSERT -t vnd.android.cursor.dir/contact -e name 'Alternate Contact' -e phone 72xxxxxxxx
但现在我无法在执行后删除相同的联系人.尝试使用下一个命令的多个参数组合,但它不起作用.
adb shell am start -a android.intent.action.DELETE -t vnd.android.cursor.dir/contact -e name 'Donald Duck' -e phone 72xxxxxxxx
如果有删除联系人的adb命令,请分享.
编辑:adb shell pm clear com.android.providers.contacts命令将清除联系人列表中的所有联系人.
如何使用“某些文本”之类的空格发送文本adb shell input text?
找到以下解决方案
adb shell input text "some%stext"工作正常。但是有什么简单的方法可以用 %s 替换空间?
例子:
$ adb shell input text "some text"
Error: Invalid arguments for command: text
Usage: input [<source>] <command> [<arg>...]
The sources are:
keyboard
mouse
joystick
touchnavigation
touchpad
trackball
dpad
stylus
gamepad
touchscreen
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> …Run Code Online (Sandbox Code Playgroud) 我无法跑步 adb shell screenrecord /sdcard/my.mp4
我正在尝试运行此命令的设备规格:
每当我运行screenrecord命令时,它都会显示找不到命令。
D:\adb>adb shell screenrecord
/systerm/bin/sh:screenrecord not found
Run Code Online (Sandbox Code Playgroud)
我也有内置的屏幕记录应用程序,这是我的问题的原因吗?除了屏幕截图,还有其他捕获屏幕的方法吗?或者我可以使用内置屏幕录制应用程序吗?任何建议或想法都是可取的。
谢谢,
我需要为屏幕记录显示触摸以显示错误,但不想导航到设置中,因为担心我会丢失我的位置并且错误将消失.
任何人都知道是否可以从adb shell启用此功能,如果是,我输入的内容是什么?
我正在调试一个应该在设备启动后自动启动的应用程序.为此我创建了一个BroadcastReceiver并将其添加到我的AndroidManifest.xml:
<receiver android:name=".receiver.StartupBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
这在大多数设备上始终有效.然而,在一台设备(MXQ Pro机顶盒)上,它只能在大部分时间工作.到目前为止,我还没有找到任何模式,当它工作时,它没有.
所以,我想找出哪些BroadcastReceivers实际上是当前在系统中注册的,以接收BOOT_COMPLETED Intent.
我玩了一下
pm:但这只告诉我哪些包想要收到Intentdumpsys:但它的输出是压倒性的,我不知道该寻找什么谢谢你的建议!
所以在启动模拟器时,adb devices 给我
模拟器-5554 设备
所有花花公子直到这里。
我的设想是创建一个模拟器农场,其中包含在多个设备上产生的多个模拟器。为了将在机器 A 上运行的 emulator-5554 与在机器 B 上运行的 emulator-5554 区别开来,我想将 emulator-5554(s) 重命名为 machineA-emulator-5554 和 machineB-emulator-5554。四处搜索并没有给我带来太多帮助(因为大多数问题都与实际设备重命名有关)。以上有什么指点吗?
NP:我曾尝试使用随机字符串对 serialno 执行 setprop,然后检查它是否确实发生了变化(并且确实发生了变化)
root@generic_x86:/ # getprop persist.usb.serialno
76876987gg
奇怪地运行 adb devices 给了我一个状态
emulator-5554 离线
模拟器名称未更改,状态为脱机。我在这里错过了什么吗?
我正在尝试模拟我的小米 Mi Max 2 上的触摸。我尝试了monkeyrunner但失败了,所以我正在尝试 adb。但是,每个命令都是通过Killed响应返回的,并且没有按下触摸/键。这是什么意思?
我将我的 android 设备连接到 PC 并通过 adb 连接。我想要做的是将文件从我的 PC 复制到我的应用程序 ( /data/data/com.example.app/databases)的内部存储中,而无需 root 或su. 我首先将文件从我的 PC 推送到/sdcard/我的 android 设备的文件夹中。
adb push database.sqlite /sdcard/
Run Code Online (Sandbox Code Playgroud)
然后我想将该文件复制到我的应用程序的内部存储中。我可以成功地作为我的应用程序包运行并查看内部存储。
adb shell
$ run-as com.example.app
$ ls databases
Run Code Online (Sandbox Code Playgroud)
这不会导致权限问题。/sdcard/如果我不使用run-as 没有问题,我也可以查看文件夹
adb shell
$ ls sdcard
Run Code Online (Sandbox Code Playgroud)
问题是,当我第一次使用时,run-as我无法访问 /sdcard/ 文件夹,而当我不使用时,run-as我无法访问内部存储文件夹。所以,如果我执行run-as然后执行这个:
cp /sdcard/database.sqlite /data/data/com.example.app/databases/
Run Code Online (Sandbox Code Playgroud)
我收到此权限被拒绝错误:
cp: /data/data/com.example.app/databases/database.sqlite: Permission denied
Run Code Online (Sandbox Code Playgroud)
我也试过 withh dd 但没有用:
dd if=/sdcard/database.sqlite of=/data/data/com.example.app/databases/
# output
dd: /sdcard/database.sqlite: Permission denied
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?我没有 root 访问权限,也没有超级用户 ( …
我在adbv1.0.39 中观察到了这种新行为。命令:
adb shell getevent -l
Run Code Online (Sandbox Code Playgroud)
给出以下输出:
观察最后一行是不完整的。这发生在许多不同的设备上。相同的命令在adbv1.0.32 中无需缓冲即可工作。
如何adb shell在adbv1.0.39 中停止输出缓冲?