相关疑难解决方法(0)

Android:java.lang.SecurityException:注入另一个应用程序需要INJECT_EVENTS权限

大家好,我是Android Junit测试新手:

我在MainActivityFunctionalTest.java文件中编写了一些测试代码

MainActivityFunctionalTest.java:

package com.example.myfirstapp2.test;

public class MainActivityFunctionalTest extends ActivityInstrumentationTestCase2<Login>{

private static final String TAG = "MainActivityFunctionalTest";
private Login activity;

  public MainActivityFunctionalTest() {
    super(Login.class);
  }


  @Override
  protected void setUp() throws Exception {
     Log.d(TAG,"Set-Up");
     super.setUp();
    setActivityInitialTouchMode(false);
    activity = getActivity();
  }

  public void testStartSecondActivity() throws Exception {
      // add monitor to check for the second activity
        ActivityMonitor monitor =
            getInstrumentation().
              addMonitor(DisplayMessageActivity.class.getName(), null, false);
        //addMonitor(MainActivity.class.getName(), null, false);
     // find button and click it
        Button view = (Button) activity.findViewById(R.id.btnLogin);

        // TouchUtils handles the …
Run Code Online (Sandbox Code Playgroud)

junit android

34
推荐指数
6
解决办法
2万
查看次数

如何使用系统权限编译Android应用程序

我需要编译具有系统权限的应用程序才能使用目标应用程序com.android.settings.现在,当我尝试运行我的apk时,我收到错误消息

测试运行失败:权限拒绝:从pid = 354开始检测ComponentInfo {com.jayway.test/android.test.InstrumentationTestRunner},因为包com.jayway.test没有与目标com匹配的签名,所以不允许使用uid = 354. android.settings

如何使用系统权限编译我的应用程序?

permissions android

23
推荐指数
1
解决办法
5万
查看次数

在本地模拟USB /蓝牙HID设备以注入事件?

是否可以模拟连接到Android的USB或蓝牙设备?

我想创建一个能够在本地模拟HID设备的应用程序.我的意思是:该应用程序应该让Android相信USB /蓝牙HID设备已连接.我希望这可以让我的应用程序在全球范围内注入触摸事件.无论如何都要模拟(虚拟)设备?请注意,我并不关心设备,我只想使用内置的HID输入支持.

我知道很多人已经问过触摸事件注入,但这种方法似乎有点不同.我也没有想用这个测试的目的,因此InstrumentationTestCase之类也无济于事.

植入设备可能是一个选项,虽然我也可以设想让我的最终用户手动安装一个专门签名的应用程序(根据/sf/answers/1171595841//sf/answers/1603196591/这有效,但它将是特定于设备的).

我知道:

  1. 在android上模拟一个鼠标输入 - 这个人似乎是在他自己的应用程序中做到这一点,虽然他的问题没有得到解答;)

  2. http://www.pocketmagic.net/2013/01/programmatically-injecting-events-on-android-part-2/#.U58SqfldVHV -需要root.有没有人成功使用过这个?此外,该解决方案似乎再次特定于设备.

  3. 蓝牙+模拟鼠标 - 这不是我想要的.手机本身不应该是HID设备,而是使用(虚拟创建的)设备.同样如下:https: //stackoverflow.com/a/8174973/2923406

请注意,我希望把我的手机到任何种类的HID设备.

android hid touch-event

19
推荐指数
1
解决办法
5153
查看次数

应用内的应用

是否可以从另一个应用程序内部运行应用程序?我想要做的是编写一个应用程序,允许您选择要启动的应用程序,然后在视图中显示此应用程序的活动.

所以在横向模式下,它看起来应该是这样的:

在此输入图像描述

这背后的想法是:

我希望能够在我自己的活动旁边开始并运行第三方活动,并且我希望能够通过控制第三方活动的活动创建单独的makros.

基本上,这样的事情:

  • 从我的应用内部启动第三方活动
  • 开始makro录制
  • 在第三方活动中做点什么
  • 停止makro录音
  • 随时使用makro

那么如何从我自己的活动中启动和控制另一个活动呢?

android multitasking

14
推荐指数
1
解决办法
1万
查看次数

检测到在Android上接听的拨出电话

我知道这已经被问过很多次了,没有答案,但我仍然希望有人终于解决了这个问题.

问题:我有一个运行Android 2.3的非root设备.我需要创建一个服务:

  1. 打个电话;
  2. 等待电话接听;
  3. 在应答呼叫后挂断电话(超时);

像许多其他人一样,我已经陷入了#2.以下是有史以来建议的解决方案的摘要:

  • 使用PhoneStateListener(最受欢迎):不起作用,对于拨打电话,它无法检测到我需要的内容.
  • 使用com.android.internal.telephony.CallManager及其方法registerForPreciseCallStateChanged(例如,这一个):不起作用,没有电话在其中注册,因此事件不会触发.
  • 使用com.android.internal.telephony.PhoneFactory获得com.android.internal.telephony.Phone实例(这是一切的关键):不工作,工厂没有被初始化; 尝试makeDefaultPhones使用安全异常中的调用结果初始化它(如此).
  • 检测传出铃声(链接):作者 - Dany Poplawec - 指出检测铃声可能有助于解决问题,但没有提供任何细节,所以我无法尝试这种技术.

看起来已经尝试了所有东西,但仍然可能还有一个技巧可以拯救我:)

android

11
推荐指数
1
解决办法
5325
查看次数

如何在android中发送关键事件?

我正在修改Android 4.0.3.r1的自定义导航栏,并希望发送"Home"和"Back"等关键事件.我的应用程序不是一个系统:

IWindowManager mWindowManager = IWindowManager.Stub.asInterface(
                ServiceManager.getService(Context.WINDOW_SERVICE));
mWindowManager.injectKeyEvent( ev, false );
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为我无法android.permission.INJECT_EVENTS从系统应用程序中获取.我怎样才能做到这一点?

android android-event

8
推荐指数
3
解决办法
3万
查看次数

数据传递到Android中的另一个应用程序

我有两个Android应用程序(应用程序A,应用程序B),如下图所示.我想通过单击第一个应用程序A中的按钮来调用应用程序B,当应用程序B启动时,文本框将包含我想从应用程序A传递的文本.

**注意-

  1. 我可以访问应用程序A,因此我可以修改应用程序A的代码.我无法访问应用程序B.

  2. 我在Stackoverflow.com和其他网站上看过许多帖子,解释了将数据传递给第二个应用程序但我看到只有当你有权修改这两个类的代码时才有可能.在我的情况下,我无法访问应用程序2,它只是一个安装在我的手机上的APK.

  3. 我想像我们通过Selenium自动化网页一样实现,我们可以访问文本字段并在该文本字段中输入值.

  4. 应用B仅用于示例目的.它可以是任何具有文本框的应用程序.

  5. 其实我想自动化应用(广告应用程式B)与应用程序A.应用A的帮助下登录过程中有许多选择凭证的凭证,并从应用程序A将推出应用程序B并进入credentioal到登录界面申请B.**

在此输入图像描述 在此输入图像描述

希望我能够解释我的问题.如果需要更多输入,我可以解释一下.

selenium automation android android-intent android-activity

6
推荐指数
2
解决办法
1559
查看次数

如何在Android模拟器上使用Xposed框架

我正在尝试API 17,我无法打开Xposed框架.

确切的步骤是:

  1. 启动分区大小为1024的模拟器
  2. adb install XposedInstaller.apk
  3. adb remount (使系统目录可写)
  4. 启动Xposed安装程序并单击"安装/更新"

我得到一个空白的错误消息然后它说没有安装框架.

android reverse-engineering

5
推荐指数
1
解决办法
8052
查看次数

adb shell 输入触摸屏点击不起作用

我正在尝试模拟从 adb 到我的 Android 设备的点击滑动手势。我尝试从 Windows 命令提示符运行以下 adb shell input tap 500 500命令adb shell input touchscreen tap 500 500。它给了我以下错误,

    java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
        at android.os.Parcel.createException(Parcel.java:2074)
        at android.os.Parcel.readException(Parcel.java:2042)
        at android.os.Parcel.readException(Parcel.java:1990)
        at android.hardware.input.IInputManager$Stub$Proxy.injectInputEvent(IInputManager.java:925)
        at android.hardware.input.InputManager.injectInputEvent(InputManager.java:886)
        at com.android.commands.input.Input.injectMotionEvent(Input.java:428)
        at com.android.commands.input.Input.access$200(Input.java:41)
        at com.android.commands.input.Input$InputTap.sendTap(Input.java:224)
        at com.android.commands.input.Input$InputTap.run(Input.java:218)
        at com.android.commands.input.Input.onRun(Input.java:108)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:56)
        at com.android.commands.input.Input.main(Input.java:71)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:380)
Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.input.InputManagerService.injectInputEventInternal(InputManagerService.java:732)
        at com.android.server.input.InputManagerService.injectInputEvent(InputManagerService.java:706)
        at android.hardware.input.IInputManager$Stub.onTransact(IInputManager.java:422)
        at android.os.Binder.execTransactInternal(Binder.java:1021)
        at android.os.Binder.execTransact(Binder.java:994)
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 …

python android touch adb

2
推荐指数
1
解决办法
5314
查看次数

在小米设备上运行猴子测试返回异常

碰撞:

java.lang.SecurityException: Injecting to another application 
           requires **INJECT_EVENTS** permission
Run Code Online (Sandbox Code Playgroud)

命令:

adb shell monkey -p  PACKAGE_NAME -v -v --throttle 300
--pct-touch 40 --pct-motion 35 --pct-nav 0 --pct-majornav 0 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 5 --pct-pinchzoom 5  --bugreport 100000
Run Code Online (Sandbox Code Playgroud)

任何想法如何克服这个?

android monkeyrunner

0
推荐指数
1
解决办法
1017
查看次数