在Android 5.0+;,系统&x27;烤面包片不露出来

在Android 5.0+;,系统&x27;烤面包片不露出来,android,android-toast,Android,Android Toast,在Android 5.0+中,禁用通知权限,则系统的Toast不会显示。有人知道为什么吗 代码如下: Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); 如果这不是问题的解决方案,但我意外地取消了应用程序的“显示通知”设置一次。进入您的设备设置/应用程序/管理器并检查此设置可能是个好主意。我找到了创建新的Toast类的解决方案 敬酒 public class Toast { private Context mContext;

在Android 5.0+中,禁用通知权限,则系统的Toast不会显示。有人知道为什么吗

代码如下:

Toast.makeText(context, msg, Toast.LENGTH_LONG).show();

如果这不是问题的解决方案,但我意外地取消了应用程序的“显示通知”设置一次。进入您的设备设置/应用程序/管理器并检查此设置可能是个好主意。

我找到了创建新的
Toast
类的解决方案

敬酒

public class Toast {
    private Context mContext;
    private WindowManager wm;
    private int mDuration;
    private View mNextView;
    public static final int LENGTH_SHORT = 1500;
    public static final int LENGTH_LONG = 3000;

    public Toast(Context context) {
        mContext = context.getApplicationContext();
        wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
    }

    public static Toast makeText(Context context, CharSequence text,
                                 int duration) {
        Toast result = new Toast(context);
        View view = android.widget.Toast.makeText(context, text, android.widget.Toast.LENGTH_SHORT).getView();
        if (view != null){
            TextView tv = (TextView) view.findViewById(android.R.id.message);
            tv.setText(text);
        }
        result.mNextView = view;
        result.mDuration = duration;
        return result;
    }

    public static Toast makeText(Context context, int resId, int duration)
            throws Resources.NotFoundException {
        return makeText(context, context.getResources().getText(resId),duration);
    }

    public void show() {
        if (mNextView != null) {
            WindowManager.LayoutParams params = new WindowManager.LayoutParams();
            params.gravity = Gravity.CENTER | Gravity.CENTER_HORIZONTAL;
            params.height = WindowManager.LayoutParams.WRAP_CONTENT;
            params.width = WindowManager.LayoutParams.WRAP_CONTENT;
            params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                    | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
            params.format = PixelFormat.TRANSLUCENT;
            params.windowAnimations = android.R.style.Animation_Toast;
            params.y = dip2px(mContext, 64);
            params.type = WindowManager.LayoutParams.TYPE_TOAST;
            wm.addView(mNextView, params);
            new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    if (mNextView != null) {
                        wm.removeView(mNextView);
                        mNextView = null;
                        wm = null;
                    }
                }
            }, mDuration);
        }
    }

    /**
     * dip2px
     *
     * @param context
     * @param dipValue
     * @return int
     *
     */
    private int dip2px(Context context, float dipValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }
}
xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center"
              android:background="@drawable/waiting_bg"
              android:gravity="center"
              android:orientation="horizontal">

<TextView
    android:id="@+id/tvMsg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:textColor="@color/mColor_white"
    android:textSize="15sp"/>


检查这个-我认为这应该是两件不同的事情,为什么它如此设计,以及如何解决它。让我看看。RahulThanks感谢您的帮助,但我是一个Android Devoleper,可能是您的解决方案无法解决我的问题,如果您正在粘贴某人的答案,必须添加积分。或者在末尾添加链接谢谢你的帮助,这个方法解决了我的问题。@KeLiuyue