2016-09-27 8 views
0

В моем приложении для Android я внедрил push-уведомление. Моя проблема связана с моим устройством, если отключить уведомления для приложения, даже сообщения с тостами отключены. Является ли это обычным явлением или мне нужно что-то менять? Пожалуйста, дайте мне знать, как я могу это преодолеть.Отключение уведомления также отключает сообщения с тостами приложения

ответ

1

Да, это обычный феномен. Нажмите here, но это на китайском. Надеюсь, это может вам помочь.

В таком случае вам нужно написать тост самостоятельно. Я могу предоставить демонстрационную версию, но она не является полной. Вы можете сделать некоторые изменения, чтобы сделать ее лучше.

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); 
} 

}

И здесь приходит файл макета.

<?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" 
    /> 

Я новичок в markdown.Sorry для формата.

+0

Есть ли способ показать сообщения с тостами даже после отключения уведомлений из настроек приложения устройства? – Nishith

 Смежные вопросы

  • Нет связанных вопросов^_^