我能找到更接近你想要完成的唯一方法是在你Activity
的 's中使用以下代码onCreate
:
ActivityManager m = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTaskInfoList = m.getRunningTasks(1);
if(!runningTaskInfoList.isEmpty()) {
String callingPackageName = runningTaskInfoList.get(0).baseActivity.getPackageName();
}
callingPackageName
如果该活动已从您自己的应用程序中的另一个活动调用,或者是您的应用程序的主要活动,则此处将设置为您的应用程序的包名称。
但是,如果 Activity 是由另一个应用程序启动的,比如使用 share 函数,那么callingPackageName
将是调用应用程序的包名,所以您所要做的就是通过调用来检查这是否等于您的应用程序的包名getPackageName()
。
另请注意:
- 您的应用现在需要
android.permission.GET_TASKS
权限
- 此方法的文档指出:
注意:此方法仅用于调试和呈现任务管理用户界面。这绝不应该用于应用程序中的核心逻辑,例如根据此处找到的信息来决定不同的行为。此类用途不受支持,将来可能会中断。
所以我不确定这有多可靠,或者它是否对你有用。