Disabling notification also disables toast messages of the app

眉间皱痕 提交于 2020-01-01 07:24:06

问题


In my android app , I have implemented push notification.My problem is from my device if I disable notification messages for the app, even the toast messages get disabled. Is this a usual phenomenon or do I need to change anything ? Please let me know how can I overcome this.


回答1:


Yes,it's a usual phenomenon.Click here but it's in Chinese.Hope this can help you.

In such case,it is need to write a Toast by your self.I can provide a demo but it is not complete.You can do some modification to make it better.

public class MToast {
    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 MToast(Context context) {
    mContext = context.getApplicationContext();
    wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
}

public static MToast makeText(Context context, CharSequence text,
                             int duration) {
    MToast result = new MToast(context);
    LayoutInflater inflate = (LayoutInflater) context
            .getApplicationContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
    View v = inflate.inflate(R.layout.dialog_toast,null);
    TextView tv = (TextView) v.findViewById(R.id.tvMsg);
    tv.setText(text);
    result.mNextView = v;
    result.mDuration = duration;
    return result;
}

public static MToast 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.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);
    }
}

/**
 * transfer dp into px
 *
 * @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);
}

}

And here comes the layout file.

<?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:background="@drawable/waiting_bg"
    android:layout_gravity="center"
    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:textSize="15sp"
    android:textColor="@color/mColor_white"
    />

I am new at markdown.Sorry for the format.




回答2:


Writing some extra information in 2018; might help someone.

So whenever you disable app notifications via system settings the Toast messages will stop showing up for your app. But this behavior seems to be a choice from manufacturers end.

I tested this on Xiaomi, Motorola and Stock android version of which Xiaomi(MiUi) was displaying toasts even when the notifications were disabled.

The solution is to avoid using Toasts for improtant information and use Snackbar instead. But this might cost you time and money.



来源:https://stackoverflow.com/questions/39722246/disabling-notification-also-disables-toast-messages-of-the-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!