我正在尝试创建一个应用程序,该应用程序将在后台运行一个能够将触摸屏事件注入任何正在运行的活动的服务.我可以通过调用将事件注入到我的应用程序的一部分Activity中Instrumentation.sendPointerSync(motionEvent);但是如果我尝试在没有运行应用程序的活动的情况下执行此操作,则会收到权限错误,说我没有INJECT_EVENTS权限.我已将此权限添加到我的清单中,但是<uses-permission android:name="android.permission.INJECT_EVENTS"></uses-permission>它仍然会抛出相同的权限异常.经过一些搜索,我得到了答案,为了获得INJECT_EVENTS权限,您的应用必须使用与系统签名相同的签名进行签名.但我不清楚这究竟是什么意思.我将不得不找到一个自定义rom构建它并使用与该应用程序签名相同的签名对其进行签名.然后在我的设备上安装自定义ROM,然后安装我的应用程序,我将能够正确地注入触摸事件?如果是这样的话是我最好与已放在一起,就像一个自定义ROM开始从该页面或者是我要去的地方需要抢Android项目的git的副本,并建立整个事情的情况myslef?无论哪种方式,任何人都知道你可以指向我的地方,这会让我朝着正确的方向努力实现这一目标吗?
是否可以从另一个应用程序内部运行应用程序?我想要做的是编写一个应用程序,允许您选择要启动的应用程序,然后在视图中显示此应用程序的活动.
所以在横向模式下,它看起来应该是这样的:

这背后的想法是:
我希望能够在我自己的活动旁边开始并运行第三方活动,并且我希望能够通过控制第三方活动的活动创建单独的makros.
基本上,这样的事情:
那么如何从我自己的活动中启动和控制另一个活动呢?
在我的Android应用程序中,我想在按钮单击时重新启动我的Android设备.但它不起作用.
到目前为止我已经这样做了.
ImageButton restartmob = (ImageButton) this.findViewById(R.id.restartmob);
restartmob.setOnClickListener(new ImageButton.OnClickListener() {
@Override
public void onClick(View v) {
Process proc = null;
try {
//proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot" });
proc = Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot now"});
proc.waitFor();
} catch (Exception ex) {
Log.i(TAG, "Could not reboot", ex);
}
}
});
Run Code Online (Sandbox Code Playgroud)
我还在清单文件中添加了以下权限.
<permission android:name="android.permission.REBOOT"/>
Run Code Online (Sandbox Code Playgroud)
当我单击图像按钮重新启动时,我得到以下异常.
java.io.IOException: Error running exec(). Command: [/system/bin/su, -c, reboot now]
Working Directory: null Environment: null
at java.lang.ProcessManager.exec(ProcessManager.java:211)
at java.lang.Runtime.exec(Runtime.java:173)
at java.lang.Runtime.exec(Runtime.java:128)
at com.android.onlinepayment.activity.SystemSubMenuActivity$1.onClick(SystemSubMenuActivity.java:49)
at android.view.View.performClick(View.java:5184)
at android.view.View$PerformClick.run(View.java:20910) …Run Code Online (Sandbox Code Playgroud) 我正在创建一个Android应用程序,需要重启手机或单击按钮时关闭.这可能吗?或者手机是否需要root访问权限?
我有两个Android应用程序(应用程序A,应用程序B),如下图所示.我想通过单击第一个应用程序A中的按钮来调用应用程序B,当应用程序B启动时,文本框将包含我想从应用程序A传递的文本.
**注意-
我可以访问应用程序A,因此我可以修改应用程序A的代码.我无法访问应用程序B.
我在Stackoverflow.com和其他网站上看过许多帖子,解释了将数据传递给第二个应用程序但我看到只有当你有权修改这两个类的代码时才有可能.在我的情况下,我无法访问应用程序2,它只是一个安装在我的手机上的APK.
我想像我们通过Selenium自动化网页一样实现,我们可以访问文本字段并在该文本字段中输入值.
应用B仅用于示例目的.它可以是任何具有文本框的应用程序.
其实我想自动化应用(广告应用程式B)与应用程序A.应用A的帮助下登录过程中有许多选择凭证的凭证,并从应用程序A将推出应用程序B并进入credentioal到登录界面申请B.**

希望我能够解释我的问题.如果需要更多输入,我可以解释一下.
我想重新启动我试过的手机
try {
Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot" });
proc.waitFor();
} catch (Exception ex) {
Log.i(TAG, "Could not reboot", ex);
}
Run Code Online (Sandbox Code Playgroud)
而且PowerManager看到我的编码,但设备没有重新启动,在编码中请给出工作代码
ok = (Button)findViewById(R.id.button1);
final PowerManager power = (PowerManager)getSystemService(Context.POWER_SERVICE);
ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
power.reboot("fav");
}
});
Run Code Online (Sandbox Code Playgroud) android ×6
automation ×1
multitasking ×1
permissions ×1
powermanager ×1
reboot ×1
rom ×1
selenium ×1