问题:部份机型不显示toast

解决方案:

1、自己在设置里面去允许通知,但是显然客户会说别的app都可以,so

2、自定义解决。查看toast的源码发现其附着在window上

源码下载地址:https://github.com/AltasT/ToastSimple

原因:

某些机型需要去设置,某些机型阉割

源码:

package com.atlas.library.widget;

import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Handler;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView; import com.atlas.library.R; /**
* Created by atlas on 15/4/25.
* Email:atlas.tufei@gmail.com
*/
public class ToastUtils {
private static final String TAG = ToastUtils.class.getSimpleName();
private static TextView tv;
public static final int LENGTH_LONG = 3500; // 3.5 seconds
public static final int LENGTH_SHORT = 2000; // 2 seconds private static View mNextView;
private static int mGravity, mX, mY;
private static final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
private static WindowManager mWM;
private static Handler mHanlder = new Handler(); /**
* init
* @param context
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private static void init(Context context) {
mY = context.getResources().getDimensionPixelSize(
R.dimen.toast_y_offset);
mGravity = context.getResources().getInteger(
R.integer.config_toastDefaultGravity);
LayoutInflater inflate = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mNextView = inflate.inflate(R.layout.transient_notification, null);
TextView tv = (TextView) mNextView.findViewById(android.R.id.message); mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mParams.format = PixelFormat.TRANSLUCENT;
mParams.windowAnimations = R.style.Animation_Toast;
mParams.type = WindowManager.LayoutParams.TYPE_TOAST;
mParams.setTitle("Toast");
mParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
// We can resolve the Gravity here by using the Locale for getting
// the layout direction
final Configuration config = mNextView.getContext().getResources().getConfiguration();
final int gravity = Gravity.getAbsoluteGravity(mGravity, config.getLayoutDirection());
mParams.gravity = gravity;
if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.FILL_HORIZONTAL) {
mParams.horizontalWeight = 1.0f;
}
if ((gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.FILL_VERTICAL) {
mParams.verticalWeight = 1.0f;
}
mParams.x = mX;
mParams.y = mY;
// mParams.verticalMargin = mVerticalMargin;
// mParams.horizontalMargin = mHorizontalMargin;
mParams.packageName = context.getPackageName();
} /**
* Show the view for the specified duration.
* @param context
* @param text
* @param duration
*/
public static void show(final Context context, final CharSequence text, int duration) {
if (context == null) {
throw new RuntimeException("context is null");
} if (mWM == null || mNextView == null) {
init(context);
}
mHanlder.removeCallbacks(cancelRunable);
mHanlder.post(new Runnable() {
@Override
public void run() {
((TextView) mNextView.findViewById(android.R.id.message)).setText(text);
if (mNextView.getParent() != null)
mWM.removeView(mNextView);
mWM.addView(mNextView, mParams);
}
});
mHanlder.postDelayed(cancelRunable, duration);
} private static Runnable cancelRunable = new Runnable() {
@Override
public void run() {
cancel();
}
}; /**
* cancel toast
*/
public static void cancel() {
if (mNextView != null && mNextView.getParent() != null)
mWM.removeViewImmediate(mNextView);
}
}

参考:http://www.th7.cn/Program/Android/201406/220638.shtml

解决部份机型toast不显示问题的更多相关文章

  1. android 关于Toast重复显示解决方法

    解决思路:   不用计算Toast的时间之类的,就是定义一个全局的成员变量Toast, 这个Toast不为null的时候才去make,否则直接setText.为了按返回键后立即使Toast不再显示,重 ...

  2. ToastCustomUtil【简单的Toast封装类】【自定义Toast的显示风格】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 ToastUtil + ToastCustom结合.主要解决低版本机型上系统toast显示不好看的问题. 效果图 代码分析 在Toa ...

  3. 手机软件Toast无法显示提示信息

    近日在做项目时,测试组的同事提出一个bug,就是在一台LG手机上,原本应该显示的Toast信息,都不显示,消息栏也没有出现通知,后来经过查资料知道有些三星.LG手机默认禁用了显示通知那一项,而不显示通 ...

  4. ToastUtil【简单的Toast封装类】【未自定义Toast的显示风格】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 一个简单的Toast封装类. 效果图 API = 6.0 API = 4.4.2 代码分析 实现了不管我们触发多少次Toast调用, ...

  5. Android中通过反射来设置Toast的显示时间

    这个Toast的显示在Android中的用途还是非常大的,同一时候我们也知道toast显示的时间是不可控的.我们仅仅能改动他的显示样式和显示的位置,尽管他提供了一个显示时间的设置方法.可是那是没有效果 ...

  6. Android中的Toast重复显示的问题

    Toast是Android中用来显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点,而且Toast显示的时间有限,过一定的时间就会自动消失. Toast一般用来提示用户的误操作.但是如 ...

  7. Android消除Toast延迟显示

    Toast可以用来显示音量改变或者保存更新消息,如果用户一直点击,Toast会排队一个一个的,直到消息队列全部显示完,这样的效果显然是不好的,下面来看解决方法    Toast.makeText(ac ...

  8. 完美解决,浏览器下拉显示网址问题 | 完美解决,使用原生 scroll 写下拉刷新

    在 web 开发过程中我们经常遇到,不想让用户下拉看到我的地址,也有时候在 div 中没有惯性滚动,就此也出了 iScroll 这种关于滚动条的框架,但是就为了一个体验去使用一个框架好像又不值得,今天 ...

  9. 解决 PHPExcel 长数字串显示为科学计数

    解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. ...

随机推荐

  1. netbeans中实体类代码的bug

    用了netbeans中实体类代码后,忽然报错: com.sun.tools.javac.code.Symbol$CompletionFailure: 找不到sun.util.logging.Platf ...

  2. step by step 之餐饮管理系统四(日志模块实现)

    三天前基本上把数据库表设计的文档写好,今天想到了一个问题,还要再加几个表,一个是log表,用来记录系统日志,另外再加几个字典表,一些需要配置的数据但又不好放在像xml文件里面的数据可以放在这些字典表里 ...

  3. log4j.properties example

    google search log4j.properties example Output to Console # Root logger option log4j.rootLogger=INFO, ...

  4. [转]关闭ORACLE数据库

    SQL> shutdown immediateORA-24324: 未初始化服务句柄ORA-24323: 不允许此值ORA-01090: 正在关闭 - 不允许连接 SQL> shutdow ...

  5. Android webview 上传文件不调用openFileChooser解决办法

    html页面带有图片上传功能,关于使用openFileChooser方法去选择图片,并且在onActivityResult方法里面设置返回的图片url文件路径,网上有很多,再次不再赘述. 实践中发现, ...

  6. 如果我用C#来输出99表

    题目:参见这个链接,简单点说就是在控制台输出一个99乘方表. 无聊想了个C#版本的解答: private static void Print(int n) { var s = Enumerable.R ...

  7. 分享MYSQL中的各种高可用技术(源自姜承尧大牛)

    分享MYSQL中的各种高可用技术(源自姜承尧大牛) 图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者) 姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发 mysql高可用各 ...

  8. 跟我一起学WCF(12)——WCF中Rest服务入门

    一.引言 要将Rest与.NET Framework 3.0配合使用,还需要构建基础架构的一些部件.在.NET Framework 3.5中,WCF在System.ServiceModel.Web组件 ...

  9. ".NET Core Open Source Update"阅读笔记

    原文链接:.NET Core Open Source Update [Immo Landwerth发布于2015年1月28日] corefx在github上的forks已经超过1000. 从2014年 ...

  10. memcached(二)事件模型源码分析

    memcachedd事件模型 在memcachedd中,作者为了专注于缓存的设计,使用了libevent来开发事件模型.memcachedd的时间模型同nginx的类似,拥有一个主进行(master) ...