2017-04-13 1 views
0

Je veux afficher le numéro de téléphone lorsque appel qui sonne dans Notification, mais je ne sais pas comment je peux montrer Numéro de téléphone dans Notification!
Pour le numéro de téléphone je BroadcastReceiver et je peux montrer ce nombre dans RecyclerView, mais je veux montrer le numéro dans Notification!
Mes codes du récepteur:Comment afficher un texte personnalisé dans la notification dans Android

public class NumberReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 

      String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 

      DBHelper dbHelper = new DBHelper(context); 
      SQLiteDatabase database = dbHelper.getWritableDatabase(); 
      dbHelper.saveNumber(number, database); 
      database.close(); 

     } 

     Intent intent1 = new Intent(DBContract.UPDATE_UI_INTENT_FILTER); 
     context.sendBroadcast(intent1); 
    } 
} 

codes MainActivity:

public class Prabeesh_page extends AppCompatActivity { 

     private RecyclerView Prabeesh_LIST; 
     private TextView Prabeesh_TEXT; 
     private Adapter mAdapter; 
     private ArrayList<IncomingModel> list = new ArrayList<>(); 
     private BroadcastReceiver broadcastReceiver; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_prabeesh_page); 

      Prabeesh_LIST = (RecyclerView) findViewById(R.id.prabeesh_list); 
      Prabeesh_TEXT = (TextView) findViewById(R.id.prabessh_textView); 
      Prabeesh_LIST.setLayoutManager(new LinearLayoutManager(this)); 
      Prabeesh_LIST.setHasFixedSize(true); 
      mAdapter = new Adapter(list); 
      Prabeesh_LIST.setAdapter(mAdapter); 

      readFromDB(); 

      addNotification(); 

      broadcastReceiver = new BroadcastReceiver() { 
       @Override 
       public void onReceive(Context context, Intent intent) { 
        readFromDB(); 
       } 
      }; 

     } 

     @Override 
     protected void onResume() { 
      super.onResume(); 

      registerReceiver(broadcastReceiver, new IntentFilter(DBContract.UPDATE_UI_INTENT_FILTER)); 

      readFromDB(); 
     } 

     @Override 
     protected void onPause() { 
      super.onPause(); 

      unregisterReceiver(broadcastReceiver); 
     } 

     public void readFromDB() { 
      list.clear(); 
      DBHelper dbHelper = new DBHelper(this); 
      SQLiteDatabase database = dbHelper.getWritableDatabase(); 
      Cursor cursor = dbHelper.readNumber(database); 
      if (cursor.getCount() > 0) { 
       while (cursor.moveToNext()) { 
        String number; 
        int id; 
        id = cursor.getInt(cursor.getColumnIndex("ID")); 
        number = cursor.getString(cursor.getColumnIndex(DBContract.INCOMING_NUMBER)); 

        list.add(new IncomingModel(id, number)); 
       } 
       cursor.close(); 
       dbHelper.close(); 
       mAdapter.notifyDataSetChanged(); 

       Prabeesh_LIST.setVisibility(View.VISIBLE); 
       Prabeesh_TEXT.setVisibility(View.GONE); 
      } 
     } 

     private void addNotification() { 
      NotificationCompat.Builder builder = 
        new NotificationCompat.Builder(this) 
          .setSmallIcon(R.mipmap.ic_launcher) 
          .setContentTitle("Notifications Example") 
          .setContentText("This is a test notification"); 

      Intent notificationIntent = new Intent(this, Prabeesh_page.class); 
      PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 
        PendingIntent.FLAG_UPDATE_CURRENT); 
      builder.setContentIntent(contentIntent); 

      // Add as notification 
      NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
      manager.notify(0, builder.build()); 
     } 
    } 

**With this codes i use numbers in `RecyclerView` :** 
ublic class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder> { 

    private ArrayList<IncomingModel> list = new ArrayList<>(); 

    public Adapter(ArrayList<IncomingModel> list) { 
     this.list = list; 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.prabbesh_row, parent, false); 
     return new MyViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     holder.ID.setText(Integer.toString(list.get(position).getId())); 
     holder.NUMBER.setText(list.get(position).getNumber()); 
    } 

    @Override 
    public int getItemCount() { 
     return list.size(); 
    } 

    public static class MyViewHolder extends RecyclerView.ViewHolder { 

     private TextView ID, NUMBER; 

     public MyViewHolder(View itemView) { 
      super(itemView); 

      ID = (TextView) itemView.findViewById(R.id.prabeeshRow_ID); 
      NUMBER = (TextView) itemView.findViewById(R.id.prabeeshRow_NUMBER); 
     } 
    } 
} 

Comment puis-je montrer ce nombre, en Notification?

+0

Voulez-vous dire mettre le numéro dans votre notification en utilisant le .setContentText ("Ceci est une notification de test") ;? – wnieves19

+0

@ snowman28924, oui mon ami. Pouvez-vous m'aider? S'il vous plaît –

+0

Ok, pourquoi ne déplacez-vous pas la méthode addNotification() à la classe NumberReceiver et affichez la notification à partir de là une fois que le récepteur est appelé, vous devriez pouvoir, puisque vous avez un contexte là. – wnieves19

Répondre

0
public class NumberReceiver extends BroadcastReceiver { 
    Context context; 
@Override 
public void onReceive(Context context, Intent intent) { 
    this.context = context; 

    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
    if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 

     String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
     addNotification(number) 
     DBHelper dbHelper = new DBHelper(context); 
     SQLiteDatabase database = dbHelper.getWritableDatabase(); 
     dbHelper.saveNumber(number, database); 
     database.close(); 

    } 

    Intent intent1 = new Intent(DBContract.UPDATE_UI_INTENT_FILTER); 
    context.sendBroadcast(intent1); 
} 

private void addNotification(String number) { 
     NotificationCompat.Builder builder = 
       new NotificationCompat.Builder(context) 
         .setSmallIcon(R.mipmap.ic_launcher) 
         .setContentTitle("Notifications Example") 
         .setContentText(number); 

     Intent notificationIntent = new Intent(context, Prabeesh_page.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 
       PendingIntent.FLAG_UPDATE_CURRENT); 
     builder.setContentIntent(contentIntent); 

     // Add as notification 
     NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     manager.notify(0, builder.build()); 
    } 
} 

Je viens d'ajouter la méthode addNotification avec un paramètre de chaîne, puis appelé à partir de la méthode OnReceive passer le numéro de l'appel entrant.

+0

Merci mon cher ami –

+0

De rien, continuez à apprendre !! – wnieves19