C# 解压一个安卓备份(adb)文件
我正在尝试使用 deflate algorithm解压缩Android ADB文件.我已经尝试了dotnetzips ionic zlib以及Microsofts indendin system.io.com.pression 在Net 4.5中引入,但两者都导致了损坏的存档.它们都具有完全相同的文件大小,但是哈希在损坏和良好的档案中不匹配. 我正在使用以下代码进行解压缩. byte[] app = File.ReadAllBytes(tb_keyOutDir.Text + "\\app_stripped.ab"); MemoryStream ms = new MemoryStream(app); //skip first two bytes to avoid invalid block length error ms.Seek(2, SeekOrigin.Begin); DeflateStream deflate = new DeflateStream(ms, Comp
8 2024-04-25
编程技术问答社区
如何将设备屏幕位置转换为发送事件位置?
我知道input tap x y shell命令,但是,我试图了解如何 使用sendevent命令执行单击.我能够通过以下命令来实现它: sendevent /dev/input/event5 3 53 X && sendevent /dev/input/event5 3 54 Y && sendevent /dev/input/event5 0 2 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 0 2 0 && sendevent /dev/input/event5 0 0 0 其中X和Y是将要单击的位置,我正在在Android Emulator BlueStacks 5上进行测试,显示分辨率将其设置为1920x1080. 代码正在工作,点击触发,但是,我不明白如何将要单击的位置转换为sendevent xy位置. 如果我使用ADB发送: sendevent /de
14 2024-04-22
编程技术问答社区
使用用户名和密码连接 ADB 代理服务器
我正在使用command 使用ADB adb shell settings put global http_proxy : 这很好. 但是,如果使用用户名和密码保护,我将无法登录代理 如果您不知道,请帮助我. 解决方案 我进行了一些调查,并找到了正确的设置,以通过ADB进行身份验证启用HTTP代理: adb shell settings put global http_proxy 192.168.225.100:3128 adb shell settings put global global_http_proxy_host 192.168.225.100 adb shell settings put global global_http_proxy_port 3128 adb shell settings put global global_http_proxy_username foo adb shell settings put
18 2024-04-22
编程技术问答社区
Android:如何使用 adb 知道 Android 设备中是否已安装应用程序?
我已经使用ADB安装了一个包含" com.xyz.game"的软件包名称的Android应用程序. 我想使用Shell脚本自动化该过程.该过程将就像已经安装了应用程序一样,卸载它(使用命令ADB卸载com.xyz.game),然后使用" ADB install nastal game.apk"安装安装,否则简单的" ADB install aint nastal game.apk". 我该如何实现? 解决方案 [更新2 ] 不使用grep adb shell pm list packages [your.package.name]如以下答案 [更新] 根据(也是)正确答案,请尝试GREP PM列表软件包的结果. adb shell pm list packages | grep com.your.app.package [原始] 如果该应用程序已经安装,并且如果您尝试再次安装同一应用程序,则ADB将带有错误-ec3>.但是,如果要重
12 2024-04-22
编程技术问答社区
在C#中访问安卓设备
我正在使用Mad-Bee(托管ADB)库来访问C#中的ADB.我只是想获取附加到PC的设备列表.当我从命令提示符中使用ADB时,我可以正确获取设备的列表,但是我在C#表单中获得0. 这是我尝试过的代码 - AndroidDebugBridge mADB; String mAdbPath; IList mDeviceList = null; public Form1() { InitializeComponent(); mAdbPath = Environment.GetEnvironmentVariable("ANDROID_ROOT"); mADB = AndroidDebugBridge.CreateBridge(mAdbPath + "\\platform-tools\\adb.exe", true); mADB.Start(); var
10 2024-04-16
编程技术问答社区
执行命令 安卓本地代码
我正在尝试从本机代码启动Android应用程序. 在ADB Shell中,我们可以使用" Am"命令启动应用程序. 链接: 如何运行(不仅安装)使用.APK文件的Android应用程序? 有什么方法可以通过C代码调用此" AM"命令? 我尝试了以下行,但Exec返回-1: ret = execl("/system/bin/am", "start", "-a", "android.intent.action.MAIN", "-n", "com.android.settings/.Settings", (char *)NULL); 这是对的吗? 解决方案 我得到了答案... 我执行了外壳本身并给了它命令...它工作 ret = execl("/system/bin/sh", "sh", "-c", "am start -a android.intent.action.MAIN -n com.android.browser/.Br
8 2024-04-07
编程技术问答社区
使用控制台发送带有捆绑的意图
我正在开发一个Android应用程序,以聆听包含一些数据捆绑包的特定意图.我想使用ADB向我的应用发送意图.我尝试了: adb shell am startservice -a com.INTENT_NAME -e myBundleName myBundleData com.pkg/com.pkg.cls 但是我的应用将其识别为字符串列表,而不是捆绑包.有人知道如何使用AM应用程序发送意图吗?不幸的是,文档仅说明了发送字符串或数字列表,没有任何内容. 解决方案 根据源代码 am无法接受bundle type 的输入数据 更新: 在Android 7.0中,意图参数解析代码 intent.java 已添加了更多数据类型(例如基本类型的Array[]和ArrayList).不幸的是,在am命令中仍然不支持Bundle type Extras. 其他解决方案 我正面临同一问题,试图伪造您在收到Facebook应用程序邀请后刚刚安装应用程序的情况.无法让外壳工作
14 2024-04-05
编程技术问答社区
Android Studio升级到3.4后无法连接adb
无法连接到ADB.检查可能问题的事件日志,请验证Local -Host条目指向127.0.0.1或:: 1 for IPv4或IPv6 尝试了ADB Kill-Server,重新启动,无效重新启动无效. 在此报道的同一问题 > 注意:我尚未在studio中添加任何文件或任何东西,格式之后是新鲜的录音室. 解决方案 用该平台替换您的平台工具并删除另一个. -tools_r26.0.0.0-windows.zip 其他解决方案 我也在Android Studio 3.4版本中遇到此问题,但是现在我已经修复了它,如果您使用的是Windows,请按照以下步骤操作: 从这里下载平台工具 -tools_r26.0.0.0-windows.zip 提取的下载zip文件 转到位置" C:\ Users \ Your_computer_user_name \ appData \ local \ local \ android \ sdk"和删除"平台工具"文件夹
10 2024-04-04
编程技术问答社区
使用applicationIdSuffix时,React Native应用无法启动
我正在使用react-native-codepush@1.16.1-beta和设置的一部分包括指定ApplicationIdsuffix. 过去,我已经将其设置在以前的应用程序上,没有任何问题(React Native 0.37).我现在在这个项目中遇到了两次此错误(React Native 0.40).我第一次重建整个项目时就消失了.它没有明显的原因再次开始发生,因此我将项目的最后一个稳定版本克隆在新的目录中,并遇到了相同的错误. 使用react-native run-android时发生错误.该错误在成功构建后发生: Starting: Intent { cmp=com.packagename/.MainActivity } Error type 3 Error: Activity class {com.packagename/com.packagename.MainActivity} does not exist. 如果我从app/build.gradle中删
2 2024-04-04
编程技术问答社区
安卓ADB在不同的浏览器中打开网址,而不是默认的。
我如何启动Web浏览器并使用默认值以外的ADB搜索网站,例如,每次我运行代码时,浏览器浏览器在默认的Chrome应用程序中都打开,但是如果我希望它能在网站上搜索网站,该怎么办Firefox或其他Web浏览器? import time from ppadb.client import Client as AdbClient client = AdbClient(host="127.0.0.1", port=5037) devices = client.devices() if len(devices) == 0: print ('no device attached') quit() device = devices [0] device.shell('am start -a android.intent.action.VIEW -d https://smartbear.com/') 解决方案 我认为您可以使用不同的am start命令,例如您要使
8 2024-04-04
编程技术问答社区
adb shell am broadcast-BroadcastReceiver抛出nullpointer
我正在尝试启动此命令: adb shell am broadcast -a android.provider.Telephony.SMS_RECEIVED --es sms_body "TEXTTEXTTEXT" -n com.example.name/.receivers.SmsReceiver ,此代码抛出了空指针异常: 公共类SMSreceiver扩展了Broadcastreceiver { ... private Context mContext; private Intent mIntent; public void onReceive(Context context, Intent intent) { mContext = context; mIntent = intent; String action = intent.getAction(); if (action.equals(Const.ACTION_SM
10 2024-04-03
编程技术问答社区
从ADB安装后,静态BroadcastReceiver无法工作
我正在从事一个项目,该项目需要通过广播ADB广播定制的意图" com.example.demo.action.launch"来启动应用程序. 我的计划是静态注册广播接收器"启动应用程序",该接收器将在接收自定义意图时启动该应用程序. 我通过调用.APK 安装了.APK adb install -r 然后我致电 发送了意图 adb shell am broadcast -a com.example.demo.action.LAUNCH 但是,意图是在发送意图后什么都没有发生的.似乎广播接收器根本没有收到意图.在接收意图之前,我需要以某种方式实例化接收器吗? 注意:由于Android设备是遥远的,因此我必须使用ADB来处理安装和启动. 谢谢! 我宣布广播接收器如下 public class LaunchAppReceiver extends BroadcastReceiver{ public Launc
12 2024-04-03
编程技术问答社区
如何从命令行发送有权限的广播
我在应用程序中有一个广播接收器,该应用程序使用我的权限com.myexample.permission.MY_PERMISSION. 我能够使用 发送广播 sendBroadcast(intent, "com.myexample.permission.MY_PERMISSION") 来自活动. 可以使用com.com.myexample.MY_ACTION的广播以进行操作,并且可以使用MY_EXTRA的额外数据以下命令: : $adb shell am broadcast -a com.com.myexample.MY_ACTION --ez MY_EXTRA true 但是如何使用adb shell命令从命令行发送许可com.myexample.permission.MY_PERMISSION的广播 解决方案 使用属于subcmd broadcast的arg --receiver-permission: adb shell am broa
8 2024-04-03
编程技术问答社区
如何在Android 4.0.3中以编程方式接听电话?
因此,作为主题指出,我需要能够在HTC Onex上以Android 4.0.3进行编程电话.我已经阅读了几个地方,MODIFY_PHONE_STATE已被Google撤销了MODIFY_PHONE_STATE的权限,因此要完成此任务,您需要进行工作. 到目前为止,我已经研究了两种途径: (1)以下盖伊的职位 使用Broadcastreceiver (2)使用以下代码尝试通过shell命令进行关键事件. final Runtime r = Runtime.getRuntime(); try { Process process = r.exec("input keyevent 5"); InputStream stream = process.getErrorStream(); log.v("Process Error Stream: " +stream.toString()); log.v("S
6 2024-04-03
编程技术问答社区
广播和接收额外的双打
我正在尝试在ADB Shell的AM广播中播放Extras.在我在Android的Broadcastreceiver中,我订阅了广播,并将额外的额外拉出来. 我的麻烦在双打.我以为广播可以包含双重,因为Bundle类具有getDouble方法,例如: double percentComplete = bundle.getDouble("percent_complete"); 但是,ADB Shell中的AM广播命令似乎不支持双打,而仅支持Floats.当我发送浮子时,bundle.getDouble()方法会抛出内部异常,以警告级别记录,表明它无法将浮子施加到两倍. 我可以发送双打,还是被迫使用浮子? 这是我知道的特定额外的标志,如Am. 报道 specifications include these flags and arguments: [-a ] [-d ] [-t
8 2024-04-03
编程技术问答社区
Android-试图在启动时测试一个服务(java.lang.SecurityException: Permission Denial)。
当设备启动Android上时,我一直在尝试测试服务,但我无法使其工作. 我正在尝试通过CMD的此命令启动它: (in .. \ appdata \ local \ android \ sdk \ platform-tools) adb shell am broadcast -a android.intent.action.BOOT_COMPLETED 或 adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -c android.intent.category.HOME -n net.fstab.checkit_android/.MyReceiver androidmanifest.xml
58 2024-04-03
编程技术问答社区
从adb向BroadcastReceiver发送意图
我有Broadcastreceiver类: public class IntentReceiver extends BroadcastReceiver { final String tag = "Intent Intercepter"; @Override public void onReceive(Context context, Intent intent) { try { String data = intent.getStringExtra("sms_body"); Log.i(tag, data); Toast.makeText(context, data.subSequence(0, data.length()), Toast.LENGTH_LONG).show(); } catch (Exception e) {
6 2024-04-03
编程技术问答社区
如何通过ADB外壳用额外的东西来广播意图?
我试图通过ADB Shell发送BATTERY_CHANGED.到目前为止,我只设法发送意图没有任何信息: am broadcast -a android.intent.action.BATTERY_CHANGED 我为此意图创建了一个应用女巫,这是系统每隔几秒钟发送的内容: #Intent;action=android.intent.action.BATTERY_CHANGED;launchFlags=0x60000010;i.icon-small=17302838;B.present=true;i.scale=100;i.level=100;S.technology=Li-ion;i.status=5;i.voltage=4155;i.invalid_charger=0;i.plugged=2;i.health=2;i.temperature=280;end 当我广播意图时,我的应用显示了以下内容: #Intent;action=android.intent
12 2024-04-03
编程技术问答社区
如何让adb tap变得快速(ADB+Python)?
所以我使用Python和ADB为单个玩家Android游戏制作了一个机器人. 最大的问题是,每次水龙头之间都有1秒的延迟. i这样连接到设备 - from ppadb.client import Client def Get_device_adb(): adb = Client(host="127.0.0.1", port=5037) devices = adb.devices() if len(devices) == 0: print("No device attached") quit() return devices[0] device = Get_device_adb() 并使用Shell Input Tap发送我的水龙头 - taps = [(225, 750), (350, 800), ...] for tap in taps: device.shell(f"input ta
6 2024-04-03
编程技术问答社区
如何在安卓系统中启用adbd在启动时监听一个端口?
我有一个扎根的HTC英雄,我想做的是启用ADBD 在启动时收听端口. 我尝试了一些发现在这里: setprop service.adb.tcp.port 5555 stop adbd start adbd 在Android外壳中,它的作用很棒. 我试图更改 init.rc 文件.我在init.rc中添加了上述代码 我通过以下命令将其替换为原始文件: adb push init.rc sdcard adb shell adb su mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 / adb cp sdcard/init.rc / 成功更换了该文件,但是当我重新启动手机并尝试连接时 通过: adb connect :5555 未建立连接. 有什么想法? (ps.我不想使用 remoteadB 应用程序和类似的shell命令 am start -n ... ) 解决方案
12 2024-04-02
编程技术问答社区