Cómo solucionar java.lang.SecurityException Android 4.2.2

De hecho, he desarrollado una aplicación para un amplio rango de dispositivos y que la aplicación también es utilizado por Orderman, que es un dispositivo que utiliza frecuencias de radio en lugar de Wi-Fi y sólo en Orderman dispositivos de bloqueo de la aplicación a veces, cuando el dispositivo está bloqueado y ni siquiera puedo conseguir exactamente qué causa el accidente.

El registro se obtuvo a partir de firebase crashlytics como puedo emular el choque con el dispositivo conectado a la PC es como falla que a veces y a veces no.

Orderman dispositivos tienen todos los Android 4.2.2

Aquí está lleno de registro de la base avanzada:

Caused by java.lang.SecurityException
Neither user 10034 nor current process has android.permission.WAKE_LOCK

android.os.Parcel.readException (Parcel.java:1425)
android.os.Parcel.readException (Parcel.java:1379)
android.os.IPowerManager$Stub$Proxy.acquireWakeLock (IPowerManager.java:299)
android.os.PowerManager$WakeLock.acquireLocked (PowerManager.java:770)
android.os.PowerManager$WakeLock.acquire (PowerManager.java:755)
android.support.v4.content.WakefulBroadcastReceiver.startWakefulService (WakefulBroadcastReceiver.java:108)
com.google.android.gms.measurement.AppMeasurementReceiver.doStartService (Origine sconosciuta:8)
com.google.android.gms.measurement.internal.zzbm.onReceive (Origine sconosciuta:38)
com.google.android.gms.measurement.AppMeasurementReceiver.onReceive (Origine sconosciuta:6)
android.app.ActivityThread.handleReceiver (ActivityThread.java:2376)
android.app.ActivityThread.access$1500 (ActivityThread.java:141)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1310)
android.os.Handler.dispatchMessage (Handler.java:99)
android.os.Looper.loop (Looper.java:137)
android.app.ActivityThread.main (ActivityThread.java:5041)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:795)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:562)
dalvik.system.NativeStart.main (NativeStart.java)
0
2019-09-17 08:47:40
fuente
4 respuestas

Si desea reemplazar cualquier grupo de espacio que usted puede utilizar:

value.replaceAll("\\s+", " ")
+0
2019-09-17 08:50:03

Tuve que usar dos reemplazos:

String e = "a b   c";
e = e.replaceAll("([A-Z|a-z])\\s([A-Z|a-z])", "$1$2");
e = e.replaceAll("   "," ");
System.out.println(e);

Que imprime

ab c

El primero sustituye a cualquier letra-espacio-carta combinado con sólo dos cartas, y luego el segundo sustituye a cualquier triple espacio con un solo espacio.

El primer reemplazo es el uso de retro-referencias. $1 se refiere a la parte dentro del primer conjunto de paréntesis que coincide con la primera letra, y $2 se refiere a la parte interior del segundo conjunto de paréntesis.

Si usted tiene líder/espacios en la entrada, usted puede llamar a trim() antes de hacer los reemplazos.

e = e.trim()
+0
2019-09-17 08:50:03

Usted podría utilizar lookarounds para hacer su reemplazo:

String newText = text
    .replaceAll("(?<! ) (?! )", "")
    .replaceAll(" +", " ");

El primer replaceAll elimina cualquier espacio no es rodeado por espacios; el segundo se reemplaza el resto de las secuencias de espacios por una sola.

Ideone ejemplo. Las secuencias de dos o más espacios se convierten en un único espacio, y solo se quitan espacios.

Lookarounds

Un lookaround en el contexto de las expresiones regulares es un término colectivo para lookbehinds y oteos. Estos son los llamados" de ancho cero afirmaciones, que significa que coincidan con un determinado patrón, pero en realidad no consumir caracteres. Hay positivos y negativos lookarounds.

Un breve ejemplo: el patrón de Ira(?!q) coincide con la subcadena Ira, pero sólo si no es seguido por un q. Así que si la cadena de entrada es de Iraq, no coinciden, pero si la cadena de entrada es de Iran, entonces el partido es de Ira.

Más info:

+0
2019-09-17 08:50:03

También podemos dividir la cadena en donde hay más de un espacio en blanco, y luego unirse a la matriz resultante por en una cadena mediante el Stream y Collector de la API.

También nos gustaría reemplazar los espacios simples mediante el uso de replaceAll() en Stream#map de la operación:

String test = "   this    is a test of     space in string    ";
//using the pattern \\s{n,} for splitting at multi spaces
String[] arr = test.split("\\s{2,}");
String s = Arrays.stream(arr)
                 .map(str -> str.replaceAll(" ", ""))
                 .collect(Collectors.joining(" "));
System.out.println(s);

Salida:

 this isatestof spaceinstring
+0
2019-09-17 08:50:03

Vea otras preguntas sobre etiquetas