在完整设备上绘制所有触摸点(android 6.0+)

时间:2016-01-25 16:43:45

标签: android android-permissions android-6.0-marshmallow

我试图让用户在触摸自己的设备时绘制所有触摸点。 (这意味着甚至在应用程序之外。)

首先,我在设备上添加了一个视图叠加层。但是,如果我取出屏幕顶部的触摸点,它似乎会阻挡整个屏幕,我无法让触摸通过视图触摸视图下的其他单元。

第二,我写了系统的“show_touches”设置,然后我可以看到所有的接触点。

第二种方式工作正常,直到android 6.0发布。高于6.0,我需要在应用程序中再次请求权限。但是当获得许可时,我仍然会崩溃“你无法改变私人安全设置”。

有没有办法获得安全设置权限?或者在屏幕顶部绘制触摸点的另一种方法是什么?

我需要一个没有根源的答​​案,任何人都可以帮我解决这个问题吗?

这是我的堆栈跟踪:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.morshues.mytestapp, PID: 31194
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=45487, result=-1, data=Intent { (has extras) }} to activity {com.morshues.mytestapp/com.morshues.mytestapp.SecondActivity}: java.lang.IllegalArgumentException: You cannot change private secure settings.
   at android.app.ActivityThread.deliverResults(ActivityThread.java:3988)
   at android.app.ActivityThread.handleSendResult(ActivityThread.java:4038)
   at android.app.ActivityThread.access$1400(ActivityThread.java:150)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1443)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:168)
   at android.app.ActivityThread.main(ActivityThread.java:5845)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
Caused by: java.lang.IllegalArgumentException: You cannot change private secure settings.
   at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:165)
   at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
   at android.content.ContentProviderProxy.call(ContentProviderNative.java:646)
   at android.provider.Settings$NameValueCache.putStringForUser(Settings.java:1400)
   at android.provider.Settings$System.putStringForUser(Settings.java:1769)
   at android.provider.Settings$System.putIntForUser(Settings.java:1874)
   at android.provider.Settings$System.putInt(Settings.java:1868)
   at com.morshues.FullRecorder.start(FullRecorder.java:238)
   at com.morshues.FullRecorder.onActivityResult(FullRecorder.java:132)
   at com.morshues.mytestapp.onActivityResult(MainCenter.java:130)
   at com.morshues.mytestapp.SecondActivity.onActivityResult(SecondActivity.java:91)
   at android.app.Activity.dispatchActivityResult(Activity.java:6439)
   at android.app.ActivityThread.deliverResults(ActivityThread.java:3984)
   at android.app.ActivityThread.handleSendResult(ActivityThread.java:4038) 
   at android.app.ActivityThread.access$1400(ActivityThread.java:150) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1443) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:168) 
   at android.app.ActivityThread.main(ActivityThread.java:5845) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 

0 个答案:

没有答案