1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.googlecode.android_scripting; 18 19 import android.app.AlertDialog; 20 import android.app.Notification; 21 import android.app.NotificationManager; 22 import android.app.PendingIntent; 23 import android.content.Context; 24 import android.content.DialogInterface; 25 import android.widget.Toast; 26 27 public class Log { Log()28 private Log() { 29 // Utility class. 30 } 31 getTag()32 private static String getTag() { 33 StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); 34 String fullClassName = stackTraceElements[4].getClassName(); 35 String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1); 36 int lineNumber = stackTraceElements[4].getLineNumber(); 37 return "sl4a." + className + ":" + lineNumber; 38 } 39 toast(Context context, String message)40 private static void toast(Context context, String message) { 41 Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 42 } 43 notify(Context context, String title, String contentTitle, String message)44 public static void notify(Context context, String title, String contentTitle, String message) { 45 android.util.Log.v(getTag(), String.format("%s %s", contentTitle, message)); 46 47 String packageName = context.getPackageName(); 48 int iconId = context.getResources().getIdentifier("stat_sys_warning", "drawable", packageName); 49 NotificationManager notificationManager = 50 (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 51 Notification.Builder builder = new Notification.Builder(context); 52 builder.setSmallIcon(iconId > 0 ? iconId : -1) 53 .setTicker(title) 54 .setWhen(0) 55 .setContentTitle(contentTitle) 56 .setContentText(message) 57 .setContentIntent(PendingIntent.getService(context, 0, null, 0)); 58 Notification note = builder.build(); 59 note.contentView.getLayoutId(); 60 notificationManager.notify(NotificationIdFactory.create(), note); 61 } 62 showDialog(final Context context, final String title, final String message)63 public static void showDialog(final Context context, final String title, final String message) { 64 android.util.Log.v(getTag(), String.format("%s %s", title, message)); 65 66 MainThread.run(context, new Runnable() { 67 @Override 68 public void run() { 69 AlertDialog.Builder builder = new AlertDialog.Builder(context); 70 builder.setTitle(title); 71 builder.setMessage(message); 72 73 DialogInterface.OnClickListener buttonListener = new DialogInterface.OnClickListener() { 74 @Override 75 public void onClick(DialogInterface dialog, int which) { 76 dialog.dismiss(); 77 } 78 }; 79 builder.setPositiveButton("Ok", buttonListener); 80 builder.show(); 81 } 82 }); 83 } 84 v(String message)85 public static void v(String message) { 86 android.util.Log.v(getTag(), message); 87 } 88 v(String message, Throwable e)89 public static void v(String message, Throwable e) { 90 android.util.Log.v(getTag(), message, e); 91 } 92 v(Context context, String message)93 public static void v(Context context, String message) { 94 toast(context, message); 95 android.util.Log.v(getTag(), message); 96 } 97 v(Context context, String message, Throwable e)98 public static void v(Context context, String message, Throwable e) { 99 toast(context, message); 100 android.util.Log.v(getTag(), message, e); 101 } 102 e(Throwable e)103 public static void e(Throwable e) { 104 android.util.Log.e(getTag(), "Error", e); 105 } 106 e(String message)107 public static void e(String message) { 108 android.util.Log.e(getTag(), message); 109 } 110 e(String message, Throwable e)111 public static void e(String message, Throwable e) { 112 android.util.Log.e(getTag(), message, e); 113 } 114 e(Context context, String message)115 public static void e(Context context, String message) { 116 toast(context, message); 117 android.util.Log.e(getTag(), message); 118 } 119 e(Context context, String message, Throwable e)120 public static void e(Context context, String message, Throwable e) { 121 toast(context, message); 122 android.util.Log.e(getTag(), message, e); 123 } 124 w(Throwable e)125 public static void w(Throwable e) { 126 android.util.Log.w(getTag(), "Warning", e); 127 } 128 w(String message)129 public static void w(String message) { 130 android.util.Log.w(getTag(), message); 131 } 132 w(String message, Throwable e)133 public static void w(String message, Throwable e) { 134 android.util.Log.w(getTag(), message, e); 135 } 136 w(Context context, String message)137 public static void w(Context context, String message) { 138 toast(context, message); 139 android.util.Log.w(getTag(), message); 140 } 141 w(Context context, String message, Throwable e)142 public static void w(Context context, String message, Throwable e) { 143 toast(context, message); 144 android.util.Log.w(getTag(), message, e); 145 } 146 d(String message)147 public static void d(String message) { 148 android.util.Log.d(getTag(), message); 149 } 150 d(String message, Throwable e)151 public static void d(String message, Throwable e) { 152 android.util.Log.d(getTag(), message, e); 153 } 154 d(Context context, String message)155 public static void d(Context context, String message) { 156 toast(context, message); 157 android.util.Log.d(getTag(), message); 158 } 159 d(Context context, String message, Throwable e)160 public static void d(Context context, String message, Throwable e) { 161 toast(context, message); 162 android.util.Log.d(getTag(), message, e); 163 } 164 i(String message)165 public static void i(String message) { 166 android.util.Log.i(getTag(), message); 167 } 168 i(String message, Throwable e)169 public static void i(String message, Throwable e) { 170 android.util.Log.i(getTag(), message, e); 171 } 172 i(Context context, String message)173 public static void i(Context context, String message) { 174 toast(context, message); 175 android.util.Log.i(getTag(), message); 176 } 177 i(Context context, String message, Throwable e)178 public static void i(Context context, String message, Throwable e) { 179 toast(context, message); 180 android.util.Log.i(getTag(), message, e); 181 } 182 } 183