Dans mon application Android, j'ai mis en place une notification push.Mon problème provient de mon appareil si je désactive les messages de notification pour l'application, même les messages toast sont désactivés. Est-ce un phénomène habituel ou dois-je changer quelque chose? S'il vous plaît laissez-moi savoir comment puis-je surmonter cela.Désactiver la notification désactive également les messages toast de l'application
0
A
Répondre
1
Oui, c'est un phénomène habituel. Cliquez sur here mais c'est en chinois. J'espère que cela peut vous aider.
Dans ce cas, il est nécessaire d'écrire un Toast par vous-même. Je peux fournir une démo mais elle n'est pas complète. Vous pouvez faire quelques modifications pour l'améliorer.
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);
}
}
Et vient ici le fichier de mise en page.
<?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"
/>
Je suis nouveau à markdown.Sorry pour le format.
Est-il possible de montrer les messages toast même après avoir désactivé les notifications à partir des paramètres de l'application de l'appareil? – Nishith