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 work on android 6.0.
I tested answer of this post but it doesn't work too : Answer Incoming Call in Android 6.0
IncomingActivity:
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.imgaccept:
{
if (Build.VERSION.SDK_INT >= 21) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Runtime.getRuntime().exec( "input keyevent " + KeyEvent.KEYCODE_HEADSETHOOK );
Intent intent = new Intent(getApplicationContext(), OutGoing.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(CommonMethods.OUTGOING_NUMBER, savedNumber);
startActivity(intent);
finish();
}
catch (Throwable t) {
}
}
}).start();
}
else {
Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK));
sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED");
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED");
Intent intent = new Intent(this, OutGoing.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(CommonMethods.OUTGOING_NUMBER, savedNumber);
startActivity(intent);
finish();
}
break;
}
case R.id.imgdecline:
{
CommonMethods.rejectCall(this);
finish();
break;
}
default:
break;
}
}
Restart your phone Restarting your phone resets all the background processes and when the phone is turned on again it starts all the apps from scratch and chances are the problem is solved. So this is a way in which you can fix being unable to answer calls on an Android phone.
The first thing to deal with unable to answer calls is to restart your smartphone. Sometimes, a simple restart will solve the incoming issue on Android. Therefore, before you try for other methods, ensure to restart your Android phone.
Check that Airplane Mode is disabled on your device. If it is disabled but your Android phone still can't make or receive calls, try enabling Airplane Mode and disable it after a couple of seconds. Disable Airplane Mode from Android Quick Settings drawer or navigate to Settings > Network & Internet > Airplane Mode.
Answer or reject a phone call To answer the call, swipe the white circle to the top of the screen when your phone is locked, or tap Answer. To reject the call, swipe the white circle to the bottom of the screen when your phone is locked, or tap Dismiss. Rejected callers can leave a message.
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With