Okay, I decompiled Skype's manifest to find out if there are any Services or Broadcasts running during a call. There are only a few internal broadcasts for incoming calls. Also only one receiver and one service exist.
I monitored all running services with my app, but the SkypeMainService is always running, even if not in a call.
Also AudioMode
is not changed by skype (but according to the logcat-logs the dev wanted to, but they just don't do it), so I cannot simply check if it is MODE_IN_CALL
.
Do you have any suggestions how to find out, if Skype is currently running and having an active call?
Thanks!
/edit: A brief overview of the Activities etc:
<activity android:name="com.skype.raider.Main">
<activity-alias android:name="com.skype.raider.ui.SplashScreenActivity" android:targetActivity="com.skype.raider.Main">
<receiver android:name="com.skype.MainReceiver" android:enabled="true" android:exported="false">
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<action android:name="android.intent.action.SEARCH" />
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<action android:name="com.skype.raider.INCOMING_GSM_CALL" />
<action android:name="com.skype.raider.ON_GSM_CALL" />
<action android:name="com.skype.raider.intent.action.request_sync" />
</receiver>
<service android:name="com.skype.MainService">
Okay, I really hoped someone would provide a useful answer. However, I picked up Reuben's advice in the comment and made this method:
/**
* Gets the current activity
*
* @param context
* A context to use
* @return The Activity name
*/
public static String getCurrentTopActivity(Context context) {
ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1);
ActivityManager.RunningTaskInfo ar = RunningTask.get(0);
return ar.topActivity.getClassName().toString();
}
Then I check if the result equals com.skype.raider.Main
. This will also return true if there is no active Skype call, but the main app is open.
Thanks for all the help, especially Reuben!
Edit: Your will need the following permission in your manifest
<uses-permission android:name="android.permission.GET_TASKS"/>
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