Android 广播接收器在其他应用程序打开特定活动时调用

Android 广播接收器在其他应用程序打开特定活动时调用,android,google-maps,navigation,broadcastreceiver,Android,Google Maps,Navigation,Broadcastreceiver,当另一个应用程序在android中打开一个特定的活动时,我需要一个广播接收器调用。例如,当android手机中安装的Map应用程序中的Navigation页面打开并显示导航时,我想显示一个显示“当前显示导航”的Toast。那么我如何才能做到这一点呢?据我所知,您需要在接待仪式上致祝酒辞 Toast.makeText(context,"your text",2000).show(); //context is input parameter from onRecieve function 以下代

当另一个应用程序在android中打开一个特定的
活动时,我需要一个
广播接收器
调用。例如,当
android
手机中安装的
Map
应用程序中的
Navigation
页面打开并显示导航时,我想显示一个显示“当前显示导航”的
Toast
。那么我如何才能做到这一点呢?

据我所知,您需要在接待仪式上致祝酒辞

Toast.makeText(context,"your text",2000).show();
//context is input parameter from onRecieve function

以下代码将帮助您识别windo更改事件

public class AccessibilityEventService
        extends AccessibilityService {

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED)
            Log.i("op",event.getPackageName());
    }

}
但它必须由用户在“设置”下的“可访问性”中启用。 或者,您可以使用以下代码检查时间间隔中的当前top活动

 ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);

// get the info from the currently running task
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);

Log.d("topActivity", "CURRENT Activity ::"
        + taskInfo.get(0).topActivity.getClassName());

ComponentName componentInfo = taskInfo.get(0).topActivity;
    componentInfo.getPackageName();
ActivityManager am=(ActivityManager)this.getSystemService(ACTIVITY_服务);
//从当前正在运行的任务中获取信息
列表taskInfo=am.getRunningTasks(1);
Log.d(“topActivity”,“当前活动:”
+taskInfo.get(0.topActivity.getClassName());
ComponentName componentInfo=taskInfo.get(0).topActivity;
getPackageName();

有一种称为AccessibilityService的服务可以帮助您实现目标,但它必须由用户通过Accessibility下的设置启用。