package com.ime.util;
import java.lang.reflect.Field;
import com.ime.tts.Logger;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.Toast;
public class ImeToast {
private static final Logger LOGGER = new Logger(ImeToast.class);
private Toast mToast;
public static final int LENGTH_LONG = Toast.LENGTH_LONG;
public static final int LENGTH_SHORT = Toast.LENGTH_SHORT;
private int type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
private ImeToast(int type){
if(type != WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
|| type != WindowManager.LayoutParams.TYPE_PHONE
|| type != WindowManager.LayoutParams.TYPE_TOAST){
this.type = type;
}
}
public static ImeToast makeText(Context context, CharSequence text, int time, int toastType){
ImeToast result = new ImeToast(toastType);
result.initToast(context, text, time);
return result;
}
@SuppressLint("ShowToast")
private void initToast(Context context, CharSequence text, int time){
mToast = Toast.makeText(context, text, time);
try{
Class TN = Class.forName("android.widget.Toast$TN");
Field mTN_field = Toast.class.getDeclaredField("mTN");
mTN_field.setAccessible(true);
Object mTN = mTN_field.get(mToast);
Field mParams_field = TN.getDeclaredField("mParams");
mParams_field.setAccessible(true);
WindowManager.LayoutParams mParams = (LayoutParams) mParams_field.get(mTN);
mParams.type = type;
LOGGER.info("....initToast....." + text);
}catch(Exception e){
e.printStackTrace();
LOGGER.error("...exception e " + e.getMessage());
}
}
public void show(){
if(mToast != null){
mToast.show();
}
}
}