Android 从应用程序内部以编程方式运行adb pull和push命令

Android 从应用程序内部以编程方式运行adb pull和push命令,android,usb,adb,file-transfer,Android,Usb,Adb,File Transfer,我正在开发一个应用程序,在这个应用程序中,我必须使用USB从计算机(即Windows系统)中输入和获取一些文件 我在网上搜索了一下,但没有找到任何有用的东西。我有一个关于命令行的想法,所以我可以通过使用类似 ./adb-s emulator-5554 pull/sdcard/juned.jpg c:/user/juned/images/ 它将复制系统指定目录中的juned.jpg文件,但是否可以通过编程方式运行相同的命令 到目前为止,我在Android Samples中得到了一个名为AdbTes

我正在开发一个应用程序,在这个应用程序中,我必须使用USB从计算机(即Windows系统)中输入和获取一些文件

我在网上搜索了一下,但没有找到任何有用的东西。我有一个关于命令行的想法,所以我可以通过使用类似

./adb-s emulator-5554 pull/sdcard/juned.jpg c:/user/juned/images/

它将复制系统指定目录中的juned.jpg文件,但是否可以通过编程方式运行相同的命令

到目前为止,我在Android Samples中得到了一个名为
AdbTest
的示例应用程序,它位于
/root/Android-sdks/Samples/Android-18/legacy/USB/
目录下,我尝试编译该应用程序,但没有显示任何内容

在该应用程序中,在
xml
目录
device\u filter.xml
文件下。在那个档案里

<resources>
    <usb-device class="255" subclass="66" protocol="1" />
</resources>

我应该提供什么价值才能使其与我的设备一起工作

是否可以通过编程方式从indide应用程序运行
adb
命令

编辑
到目前为止,我了解到,adb命令无法在非根设备中执行,因此是否有其他方法使用USB传输文件?

对于非根设备来说,这是不可能的

因为要运行您的命令,它需要Su权限(超级用户)

您的命令将是system/bin/Su/-command

非根设备无法访问system/bin/Su

您可以通过安装Superuser.apk来根目录仿真器


或者尝试

您可能需要root访问才能从您的app@Metalhead1247有没有针对非根设备的解决方案?这与根设备无关。相反,问题是你需要在PC上安装某种文件服务器,以便在设备发出请求时以某种方式提供文件。adb不提供这一功能-它只接受PC端的请求。不,它与root无关,而是adb推/拉命令必须从PC发出,而不是从Android设备发出。您将其与其他各种shell命令和操作混淆,这些命令和操作只允许adbd的“shell”(或在仿真器“root”)用户标识上使用,而不允许应用程序使用。但push和pull不是通过adb运行的shell命令,而是开发系统adb命令。