我一直在搜索,发现this post可用于获取设备的电话号码。在我的主服务文件中,我有一个公共静态变量,设置为使用上述帖子中的方法找到的电话号码。
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;
}
}
我绝不是一个高级软件开发人员,但我知道使用公共静态变量不是最好的解决方案,因为它可以从课外改变。此公共静态电话号码正在另一个类中访问,该类将其发送到服务器。它的访问方式如下:
String devicePhoneNumber;
devicePhoneNumber = MyService.phoneNumber;
如果有办法在不使用TelephonyManager的情况下获取电话号码和IMEI,或者更具体地说不需要应用程序上下文,我就不必担心这个问题。如果这是不可能的,也许有一个使用公共静态变量的解决方法?
感谢所有帮助
答案 0 :(得分:2)
没有上下文的情况下,没有办法获取没有上下文的语音,因为上下文是您进入用户电话的网关。它使您可以访问存储,位置,显示,几乎一切。
如果你经常使用phonenumber,我认为你应该在mainActivity中为它做一个吸气剂,那就是你从中获取它的地方。在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()