0

Je développe une application d'écran de verrouillage. Ici l'écran de verrouillage est affiché en haut de l'écran en utilisant la commande "WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;"Android - Impossible de voir les appels entrants lorsque LayoutParams.TypeSystemError est affiché

Mais mon problème est que je ne peux pas Voir la fenêtre d'appel entrant lorsque l'écran de verrouillage personnalisé est affiché. La fenêtre d'appel entrant n'est pas prioritaire sur mon écran de verrouillage personnalisé.

1) Y a-t-il une autorisation requise pour afficher la fenêtre d'appel entrant?

2) Nous devons ajouter d'autres codes pour répondre à la classe entrante

Ceci est mon récepteur LockScreen classe

public class LockScreenReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if(action.equals(Intent.ACTION_SCREEN_OFF) || action.equals(Intent.ACTION_BOOT_COMPLETED)) 
     { 
      Intent i = new Intent(context, MainActivity.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     } 
    } 

Dans les applications de l'écran de verrouillage normale -> Ils peuvent assister aux appels entrants et après avoir pris cet appel, l'écran de verrouillage s'affiche. Comment ????

S'il vous plaît aidez-moi. Merci à l'avance

Répondre

0
  1. récepteur Ajouter dans le manifeste et demander la permission

    <receiver android:name=".IncomingCall"> 
         <intent-filter> 
         <action android:name="android.intent.action.PHONE_STATE" /> 
         </intent-filter> 
    </receiver> 
    

    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

  2. Créer une classe IncomingCall

    public class IncomingCall extends BroadcastReceiver { 
    
    public void onReceive(Context context, Intent intent) { 
    
        try { 
          TelephonyManager telephonyManager = (TelephonyManager) context 
            .getSystemService(Context.TELEPHONY_SERVICE); 
    
          MyPhoneStateListener PhoneListener = new MyPhoneStateListener(); 
    
          // Register listener for LISTEN_CALL_STATE 
          telephonyManager.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE); 
    
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
    
  3. Mettre en œuvre PhoneStateListener dans LockScreen et appelez onCallStateChanged

    private class LockScreen extends AppCompatActivity implements PhoneStateListener{ 
    
        public void onCallStateChanged(int state, String incomingNumber) { 
    
         //Disable lockscreen when calls come 
    
        }