Обнаружение вызова для skype в android

Подобно обнаружению телефонных звонков с помощью phoneStateListener, я хочу определить вызов из Skype в Android. Есть ли какой-либо слушатель Skype для звонка по телефону. Пожалуйста, предложите какой-то способ.

Благодаря моему другу Шазли, существует надежное решение для решения этой проблемы.

Всякий раз, когда подключается вызов skype, он выдает уведомление и по окончании вызова он удаляет уведомление. NotificationListenerService может использоваться для обнаружения уведомления skype.

Добавьте строки в файл манифеста.

<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> 

Создайте службу для прослушивания уведомлений.

 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); } } }; 

Нет, они не являются приятелями для скайпа, например, телефоном или другим способом используют skype для окон или инструментов Android. Лучше работать с жестким слоем и ярким способом вставить в разные темы.