如何确定Android上的Skype通话当前是否处于活动状态

For*_*rce 8 android skype android-package-managers

好的,我反编译了Skype的清单,以确定在通话过程中是否有任何服务或广播正在运行.来电只有几个内部广播.此外,只存在一个接收器和一个服务.

我使用我的应用程序监视所有正在运行的服务,但SkypeMainService始终在运行,即使不在通话中也是如此.

AudioModeskype 也没有改变(但根据开发人员想要的logcat-logs,但他们只是不这样做),所以我不能简单地检查它是否是MODE_IN_CALL.

如果Skype目前正在运行并且正在通话,您有什么建议吗?

谢谢!

/ edit:活动等的简要概述:

<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">
Run Code Online (Sandbox Code Playgroud)

For*_*rce 2

好吧,我真的希望有人能提供有用的答案。然而,我在评论中采纳了鲁本的建议并提出了这个方法:

/**
 * 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();
}
Run Code Online (Sandbox Code Playgroud)

然后我检查结果是否等于 com.skype.raider.Main。如果没有活动的 Skype 通话,但主应用程序已打开,这也将返回 true。

感谢您的所有帮助,尤其是鲁本!

编辑:您的清单中需要以下权限

<uses-permission android:name="android.permission.GET_TASKS"/>
Run Code Online (Sandbox Code Playgroud)