gpt4 book ai didi

android - 在没有应用程序上下文的情况下获取 IMEI 和电话号码

转载 作者:行者123 更新时间:2023-11-29 00:10:21 25 4
gpt4 key购买 nike

我一直在寻找并找到this post在获取我的设备的电话号码时很有用。在我的主服务文件中,我有一个公共(public)静态变量,该变量设置为使用上述帖子中的方法找到的电话号码。

class MyService extends Service implements... {
//Phone number of the device
public static String phoneNumber;

public void onCreate() {
//Grab phone number of device
TelephonyManager tMgr = (TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

phoneNumber=mPhoneNumber;
}
}

我绝不是高级软件开发人员,但我知道使用公共(public)静态变量并不是最好的解决方案,因为它可以在类之外进行更改。这个公共(public)静态电话号码正在另一个类中访问,该类将其发送到服务器。它被这样访问:

String devicePhoneNumber;
devicePhoneNumber = MyService.phoneNumber;

如果有一种方法可以在不使用 TelephonyManager 的情况下获取电话号码和 IMEI,或者更具体地说,不需要应用程序上下文,我就不必担心这个问题。如果那不可能,也许有使用公共(public)静态变量的解决方法?

感谢大家的帮助

最佳答案

在没有 Context 的情况下获取电话号码没有解决方法,因为 Context 是您进入用户电话的网关。它使您可以访问存储、位置、显示,几乎所有内容。

如果你经常使用电话号码,我认为你应该在 mainActivity 中为它创建一个 getter,无论如何你都可以从那里获取它。在您的 mainActivity onCreate() 方法中初始化

private String phoneNumber;

作为电话号码并在您的 mainActivity 中创建一个

public String getPhoneNumber()

要从您的服务访问它,您可以在应用的其他部分调用

((MainActivityNameHere) getApplicationContext()).getPhoneNumber()

除非你在静态方法中工作。不过,您仍然需要访问 MainActivity。我通常在 mainActivity 中这样做:

private static MainActivity context;
public void onCreate() {
context = this;
}

public static getContext() { return context; }

希望语法是正确的,尝试将以上内容合并到您的 mainActivity 中并从您的服务中调用它

MainActivity.getContext().getPhoneNumber()

关于android - 在没有应用程序上下文的情况下获取 IMEI 和电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com