我正在从事一个AOSP项目,作为其中的一部分,我正在修改蓝牙SDK。我已经修改了android.bluetooth.BluetoothAdapter::getDefaultAdapter()方法,我想知道哪个应用程序调用了该方法。
这个类中有一个mContext成员,在大多数情况下它是空的,有时它的包名有值,我猜是因为调用BluetoothAdapter::getDefaultAdapter()的应用程序不必传递上下文。
的应用程序的包名。
如果这是不可能的,那么下一个选项是获取当前处于前台的应用程序的包名。我尝试打印android.os.Process的Pid和Uid,得到的是'system‘应用程序的进程Id。还有其他方法可以帮助我在前台获取应用程序的包名吗?
如果这也是不可能的,那么剩下的唯一选项是执行“虚拟窗口窗口\ grep -E 'mObscuringWindow'”并解析结果。但我不太确定这是否明智和可靠。
任何帮助都将不胜感激。谢谢!
发布于 2022-05-15 05:36:17
您没有提到您正在使用的Android版本。
从Aosp主分支的角度来看。尝试使用AttributionSource.myAttributionSource().getPackageName()
@Deprecated
@RequiresNoPermission
public static synchronized BluetoothAdapter getDefaultAdapter() {
if (sAdapter == null) {
sAdapter = createAdapter(AttributionSource.myAttributionSource());
}
return sAdapter;
}https://stackoverflow.com/questions/72238638
复制相似问题