问题标签 [android-shell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
248 浏览

android - 如何使用 adb shell 命令启动具有相同包 id 但应用程序 id 不同的应用程序

我在我的 Android 设备上安装了相同应用程序的 2 个变体,它们具有相同的包 ID 但不同的应用程序 ID。我无法使用应用程序 ID 与包 ID 不同的 shell 命令启动应用程序。

我知道以下启动应用程序的命令

0 投票
0 回答
140 浏览

android - android adb shell 更改时间会在重启后丢失

我想用 adb shell 命令和

或者例如

我的设备时间正确更改,但是当我重新启动设备时,所有更改都消失了。

有什么办法可以通过吗?还是我应该用命令将它保存在某个地方?

0 投票
1 回答
352 浏览

java - Android:从应用程序执行二进制文件

正如标题所示,我想从我的 android 应用程序中执行一个二进制文件。我使用 NDK 创建了一个二进制文件,并且可以使用 adb shell 运行它。然后我尝试使用 Runtime exec 运行它,但权限被拒绝。我尝试了不同的目录并更改了文件权限。

我调查了这个问题,发现很多堆栈溢出问题/答案大多已经过时了。似乎 Android 安全性在不同版本上发生了很大变化。

我发现了什么: 操作系统阻止应用程序执行自己编写的代码。这称为Write xor execute并且是有意义的。.apk 和 .dex 文件除外。这应该意味着我想要的东西是不可能的。

我还发现了一些能够执行此类二进制文件的应用程序,例如Android 离线 C 编译器,它编译并执行 C 代码。另一个可以执行二进制文件的著名应用程序是终端仿真器Termux。另外,有趣的是,在执行二进制文件时,它们都具有与 adb shell 相同的性能。因此,我假设他们在 shell 上运行二进制文件。

我最终想知道的是这些应用程序如何执行这些二进制文件,以及我是否可以实现相同的目标。

我进一步研究了这两个应用程序的代码,它们使用本机代码来创建一个执行 shell 命令的进程。相反,我总是使用可以从 Java 访问的 Runtime 对象。此外,他们使用本机代码来更改文件权限。这让我想知道使用本机代码是否会给开发人员更多关于这些限制的自由。

我的问题:在尝试执行二进制文件时使用 Java 或本机代码会有所不同吗?如果不是,他们可以执行二进制文件的原因是什么?这可以用 Java 实现吗?

这是来自 Termux 的本机代码,它创建了一个执行 shell 命令的子进程:

如果我遗漏了某些东西并且还有其他一些技巧可以执行二进制文件,我也想听听。

非常感谢任何帮助和/或见解!

PS:可能也很重要,我不想在 .apk 中包含二进制文件,而是在我的应用程序运行时下载或编写它。此外,二进制文件并不复杂。我目前只是尝试执行“Hello world”-二进制文件。

0 投票
0 回答
27 浏览

android - 如何通过 shell/ADB 读取当前的沉浸模式状态?

是否有可以获取沉浸式模式当前状态的 Android shell 命令(即immersive.fullimmersive.statusimmersive.navigationimmersive.off)?

可以通过 shell 命令设置沉浸式模式settings put global policy_control immersive.full=*,并且可以通过 shell 查询其他系统状态(例如,使用 获取当前亮度级别settings get system screen_brightness)。但是,我无法弄清楚哪个命令会返回沉浸式模式的当前状态。目标是以编程方式检测应用程序当前是否处于沉浸式模式(用于 Tasker 和 Macrodroid 等自动化应用程序)。

我尝试了各种听起来可能的命令组合,例如:settings get system immersivemode, settings get system immersive_mode, settings get global policy_control,但其中大多数返回语法错误,因为我真的不知道我在寻找什么。有什么建议么?

0 投票
0 回答
20 浏览

android - 如何在 Android Studio 的 android 模拟器设备资源管理器中创建符号链接

我正在创建一个主要处理文件的 android 应用程序。我在我的应用程序的文件夹中下载、加密和解密文件\data\data\com.example.myapp\files。大多数时候我需要浏览文件夹并检查文件是否根据我的应用程序正确更新。但是,有时 android studio 中的设备资源管理器会刷新,我需要再次手动转到该位置才能查看文件。所以我尝试使用ln命令创建我需要的文件夹的符号链接到 Android OS 的根文件夹。但由于权限问题,命令无法成功执行。我也尝试在 sdcard 中创建它。因为它比通过包裹探索要简单一些。但这也需要许可。我检查run-as了包名称。但这也行不通。