首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在前台获取应用程序包名的最佳方法是什么?

在前台获取应用程序包名的最佳方法是什么?
EN

Stack Overflow用户
提问于 2022-05-14 08:44:50
回答 1查看 143关注 0票数 0

我正在从事一个AOSP项目,作为其中的一部分,我正在修改蓝牙SDK。我已经修改了android.bluetooth.BluetoothAdapter::getDefaultAdapter()方法,我想知道哪个应用程序调用了该方法。

这个类中有一个mContext成员,在大多数情况下它是空的,有时它的包名有值,我猜是因为调用BluetoothAdapter::getDefaultAdapter()的应用程序不必传递上下文。

  1. ,所以我想知道是否有任何可靠的方法来获取调用getDefaultAdapter方法?

的应用程序的包名。

如果这是不可能的,那么下一个选项是获取当前处于前台的应用程序的包名。我尝试打印android.os.Process的Pid和Uid,得到的是'system‘应用程序的进程Id。还有其他方法可以帮助我在前台获取应用程序的包名吗?

如果这也是不可能的,那么剩下的唯一选项是执行“虚拟窗口窗口\ grep -E 'mObscuringWindow'”并解析结果。但我不太确定这是否明智和可靠。

任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-05-15 05:36:17

您没有提到您正在使用的Android版本。

从Aosp主分支的角度来看。尝试使用AttributionSource.myAttributionSource().getPackageName()

@Deprecated

代码语言:javascript
复制
@RequiresNoPermission
public static synchronized BluetoothAdapter getDefaultAdapter() {
    if (sAdapter == null) {
        sAdapter = createAdapter(AttributionSource.myAttributionSource());
    }
    return sAdapter;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72238638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档