public static void log(XHook hook, int priority, String msg) { // Check if logging enabled int uid = Process.myUid(); if (!mLogDetermined && uid > 0) { mLogDetermined = true; try { if (uid == Process.SYSTEM_UID) mLog = PrivacyService.getSettingBool(0, PrivacyManager.cSettingLog, false); else mLog = PrivacyManager.getSettingBool(0, PrivacyManager.cSettingLog, false, true); } catch (Throwable ignored) { mLog = false; } } // Log if enabled if (priority != Log.DEBUG && (priority == Log.INFO ? mLog : true)) if (hook == null) Log.println(priority, "XPrivacy", msg); else Log.println(priority, String.format("XPrivacy/%s", hook.getClass().getSimpleName()), msg); // Report to service if (Process.myUid() > 0 && priority == Log.ERROR) if (Process.myUid() == Process.SYSTEM_UID) PrivacyService.reportErrorInternal(msg); else try { IPrivacyService client = PrivacyService.getClient(); if (client != null) client.reportError(msg); } catch (RemoteException ignored) { } }