2015-06-15 27 views
0

Android INJECT_EVENTS permissionPermission: INJECT_EVENTS for Instrumenation to other apps但它仍然錯誤的應用程序需要我跟着INJECT_EVENTS許可

1.I做了根我的手機的成功。

2.我已經做了跟蹤sign application APK和複製app.apksystem/app和設置權限app.apkrw-r--r--通過應用程序根探險

3.I添加<uses-permission android:name="android.permission.INJECT_EVENTS" />在AndroidManifest.xml

,但它仍然需要差錯注入permissoin 。我不知道爲什麼?

06-06 21:23:31.815: E/OpenCV::camera(21812): calling (*pGetPropertyC)(0x7bde06c8, 3) 
06-06 21:23:32.058: E/AndroidRuntime(21812): FATAL EXCEPTION: Thread-1881 
06-06 21:23:32.058: E/AndroidRuntime(21812): Process: com.example.handtracking, PID: 21812 
06-06 21:23:32.058: E/AndroidRuntime(21812): java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission 
06-06 21:23:32.058: E/AndroidRuntime(21812): at android.os.Parcel.readException(Parcel.java:1472) 
06-06 21:23:32.058: E/AndroidRuntime(21812): at android.os.Parcel.readException(Parcel.java:1426) 
06-06 21:23:32.058: E/AndroidRuntime(21812): at android.hardware.input.IInputManager$Stub$Proxy.injectInputEvent(IInputManager.java:356) 
06-06 21:23:32.058: E/AndroidRuntime(21812): at android.hardware.input.InputManager.injectInputEvent(InputManager.java:642) 
06-06 21:23:32.058: E/AndroidRuntime(21812): at android.app.Instrumentation.sendPointerSync(Instrumentation.java:937) 
06-06 21:23:32.058: E/AndroidRuntime(21812): at com.example.handtracking.CameraService$CameraWorker$2.run(CameraService.java:293) 
06-06 21:23:32.274: E/Surface(240): queueBuffer: error queuing buffer to SurfaceTexture, -32 
06-06 21:23:32.276: E/MtkCam/DisplayClient(240): (22102)[enquePrvOps] mpStreamOps->enqueue_buffer failed: status[Broken pipe(32)], rpImgBuf(0xb7381fb8,0xaeeb1000) (enquePrvOps){#369:mediatek/hardware/mtkcam/v1/client/DisplayClient/DisplayClient.Stream.cpp} 
06-06 21:23:32.406: E/Sensors(785): handleToDriver handle(0) 
06-06 21:23:32.406: E/Sensors(785): handleToDriver handle(0) 
06-06 21:23:32.409: E/Sensors(785): new setDelay handle(0),ns(1000000)m, error(0), index(1) 
06-06 21:23:32.409: E/Accel(785): ACC batch: handle:0, en:0, maxBatchReportLatencyNs:0 
06-06 21:23:32.409: E/Sensors(785): sensor 0 go to common batch 
06-06 21:23:32.480: E/Sensors(785): handleToDriver handle(0) 
06-06 21:23:32.480: E/Sensors(785): handleToDriver handle(0) 
06-06 21:23:32.483: E/Sensors(785): new setDelay handle(0),ns(1000000)m, error(0), index(1) 
06-06 21:23:32.483: E/Accel(785): ACC batch: handle:0, en:0, maxBatchReportLatencyNs:0 
06-06 21:23:32.483: E/Sensors(785): sensor 0 go to common batch 
06-06 21:23:32.743: E/PROXIMITY(785): ProximitySensor: unknown event (type=3, code=0) 
06-06 21:23:32.843: E/PROXIMITY(785): ProximitySensor: unknown event (type=3, code=0) 
06-06 21:23:33.543: E/PROXIMITY(785): ProximitySensor: unknown event (type=3, code=0) 

代碼引入事件

thread_touch = new Thread(){ 
         @Override 
         public void run(){ 
           Instrumentation m_Instrumentation = new Instrumentation(); 

           m_Instrumentation.sendPointerSync(MotionEvent.obtain(
             SystemClock.uptimeMillis(), 
             SystemClock.uptimeMillis(), 
             MotionEvent.ACTION_DOWN,x, y, 0)); 
           m_Instrumentation.sendPointerSync(MotionEvent.obtain(
             SystemClock.uptimeMillis(), 
             SystemClock.uptimeMillis(), 
             MotionEvent.ACTION_UP,x,y, 0)); 
         } 
        }; 
        thread_touch.start(); 

我的手機是聯想P70的Android 4.4.4

回答

1

此權限授予系統應用。第三方不能擁有它。除非您使用系統證書籤署您的應用程序,否則您將不會被授予INJECT_EVENTS權限。

Docs here read

允許應用程序截獲用戶事件(按鍵,觸摸,軌跡球) 到事件流,並提供給任何窗口。如果沒有此 權限,則只能將事件傳遞到您自己的 進程中的窗口。

不適用於第三方應用程序

+0

如何使用系統證書籤署我的應用程序?你能給我鏈接嗎? – PichetNart

+0

和其他任何一樣。但你必須先獲得系統證書,這不是公共事務。 –

+0

如何在我的應用程序中擁有系統證書? – PichetNart

相關問題