Skype通話が現在Androidでアクティブであるかどうかを確認する方法
-
28-10-2019 - |
質問
さて、私はSkypeのマニフェストを解凍して、電話中に実行されているサービスや放送があるかどうかを調べました。着信のための内部ブロードキャストはわずかです。また、1つのレシーバーと1つのサービスのみが存在します。
アプリですべての実行中のサービスを監視しましたが、Skypemainserviceは、電話に出ていなくても常に実行されています。
また AudioMode
Skypeによって変更されていません(ただし、Devが望んでいたLogCat-Logsによると、彼らはそれをしません)。 MODE_IN_CALL
.
Skypeが現在実行されていてアクティブな電話がかかっている場合、知る方法を提案していますか?
ありがとう!
/編集:アクティビティなどの簡単な概要:
<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">
解決
さて、私は本当に誰かが有用な答えを提供することを望んでいました。しかし、私はコメントでルーベンのアドバイスを取り上げて、この方法を作成しました。
/**
* 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();
}
次に、結果が等しいかどうかを確認します com.skype.raider.Main
. 。これは、ある場合にtrueを返します 番号 アクティブなSkypeコールですが、メインアプリは開いています。
すべての助け、特にルーベンに感謝します!
編集: あなたの意志はあなたのマニフェストで次の許可を必要とします
<uses-permission android:name="android.permission.GET_TASKS"/>
他のヒント
Skypeがこれのいずれかを変更する日(コーディングが終了する前に2日後に来るアップデートにある可能性があります)コードが壊れる可能性があります。ですから、この種のことを試みる価値はないと思います。
申し訳ありませんが、これは「答え」ではないかもしれませんが、これに投資する時間は価値があるとは思いません。
それを推測する可能性を高めるためにできることがいくつかあります:
1)アプリケーションが実行されているかどうかを確認します。
ActivityManager activityManager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();
for(int i = 0; i < procInfos.size(); i++){
if(procInfos.get(i).processName.equals("com.android.browser")) {
Toast.makeText(getApplicationContext(), "Browser is running", Toast.LENGTH_LONG).show();
}
}
2)電話の状態を確認してください。 フォネマーガー
3)そして最後にSkypeをチェックします 開発者ページ 既知のAPIの場合