Call detection for skype in android

As with detecting phone calls using phoneStateListener, I want to detect a call from Skype to Android. Is there any Skype listener for making a phone call? Please suggest some way.

+4
source share
2 answers

Thanks to my friend Shazli, there is a reliable solution to solve this problem.

Whenever a skype call is connected, it issues a notification and at the end of the call it deletes the notification. NotificationListenerService can be used to detect skype notifications.

Add the lines below to the manifest file.

<service android:name=".SkypeNotificationListenerService" android:label="@string/app_name" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> <intent-filter> <action android:name="android.service.notification.NotificationListenerService" /> </intent-filter> </service> 

Create a service to listen to notifications.

 public class SkypeNotificationListenerService extends NotificationListenerService { private boolean mSkypeConnected; private static final String TAG = "NM"; public SkypeNotificationListenerService() { } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onCreate() { super.onCreate(); Log.d(TAG, "Service created"); IntentFilter filter = new IntentFilter(); filter.addAction("com.example.NOTIFICATION_LISTENER"); LocalBroadcastManager.getInstance(this) .registerReceiver(nlServiceReceiver, filter); } @Override public void onDestroy() { super.onDestroy(); LocalBroadcastManager.getInstance(this) .unregisterReceiver(nlServiceReceiver); } @Override public IBinder onBind(Intent intent) { return super.onBind(intent); } @Override public void onNotificationPosted(StatusBarNotification sbn) { super.onNotificationPosted(sbn); String packageName = sbn.getPackageName(); Log.d(TAG, "onNotificationPosted " + packageName); if(packageName != null && packageName.equals("com.skype.raider")) { Intent intent = new Intent("com.example.NOTIFICATION_LISTENER"); intent.putExtra("connected", true); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } } @Override public void onNotificationRemoved(StatusBarNotification sbn) { super.onNotificationRemoved(sbn); String packageName = sbn.getPackageName(); Log.d(TAG, "onNotificationRemoved " + packageName); if(packageName != null && packageName.equals("com.skype.raider")) { Intent intent = new Intent("com.example.NOTIFICATION_LISTENER"); intent.putExtra("connected", false); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } } @Override public StatusBarNotification[] getActiveNotifications() { return super.getActiveNotifications(); } BroadcastReceiver nlServiceReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent != null) { boolean connected = intent.getBooleanExtra("connected", false); Intent skypeIntent; skypeIntent = new Intent(Constants.SKYPE_CONNECTED); if(connected && !mSkypeConnected) { mSkypeConnected = true; skypeIntent.putExtra("connected", true); } else if(!connected) { mSkypeConnected = false; Log.d(TAG, "send broadcast disconnected"); skypeIntent.putExtra("connected", false); } sendStickyBroadcast(skypeIntent); } } }; 
+3
source

No, they are not Skype buddies, like phone calls or other means. Use skype for Windows or Android tools. Improve your work with a hard layer and a bright way to paste into different themes.

-1
source

All Articles