Can't answer incoming call in android marshmallow 6.0

前端 未结 3 2053
暖寄归人
暖寄归人 2020-12-17 15:23

I\'m creating a calling app.

Here\'s Auto answer which works on android 4.0 and 5.0; whereas when i have an incoming call answer call button works but it doesn\'t wo

相关标签:
3条回答
  • 2020-12-17 15:59

    Solved! Dialer app had "Show Notifications" box unticked.

    Not sure how that happened.

    For anyone experiencing the same issue:

    Settings > Apps > All > Dialer > Check the notification box.

    0 讨论(0)
  • 2020-12-17 16:07

    You need to tick the show notification box just go to

    Settings > Apps > All > Dialer > Check the notification box

    0 讨论(0)
  • 2020-12-17 16:12

    To many research, finally i found solution

    NotificationCall.java

    public class NotificationCall extends NotificationListenerService {
    
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    
    static StatusBarNotification mysbn;
    Context context;
    
    public StatusBarNotification[] getActiveNotifications() {
        return super.getActiveNotifications();
    }
    
    public void onCreate() {
        super.onCreate();
        this.context = getApplicationContext();
    }
    
    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        super.onNotificationPosted(sbn);
        mysbn = sbn;
        try {
    
            String packageName = sbn.getPackageName();
            Intent intent = new Intent("Msg");
            intent.putExtra("package", packageName);
            LocalBroadcastManager.getInstance(this.context).sendBroadcast(intent);
    
        } catch (Exception e) {
            e.printStackTrace();
        }
      }
    }
    

    Add in manifest:

     <service
            android:name=".NotificationCall"
            android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
            <intent-filter>
                <action android:name="android.service.notification.NotificationListenerService" />
            </intent-filter>
        </service>
    

    Accept on button click:

    button.setOnClickListener(new View.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
            @Override
            public void onClick(View v) {
                try {
                    for (MediaController mediaController : ((MediaSessionManager) getApplicationContext().getSystemService("media_session")).getActiveSessions(new ComponentName(getApplicationContext(), NotificationCall.class))) {
                        if ("com.android.server.telecom".equals(mediaController.getPackageName())) {
                            mediaController.dispatchMediaButtonEvent(new KeyEvent(1, 79));
                            return;
                        }
                    }
                } catch (SecurityException e2) {
                    e2.printStackTrace();
                }
            }
        });
    

    You need to tick the show notification box just go to

    Settings > Apps > All > Dialer > Check the notification box
    

    For Permission:

      if (Settings.Secure.getString(getContentResolver(), "enabled_notification_listeners").contains(getApplicationContext().getPackageName()))
        {
    
        } else
            {
            Intent i = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(i);
        }
    

    Have tested upto version Nougat.

    Cheers!

    0 讨论(0)
提交回复
热议问题