如何在非activity class中获取设备imei号码?

How to get device imei number in non-activity class?

我正在尝试为一些有用的功能制作一个非activity class,例如获取设备 IMEI 号码。 但是当我使用

    mngr = (TelephonyManager)myContext(Context.TELEPHONY_SERVICE);

它给我这个错误:

    The method myContext(String) is undefined for the type FunctionsForWorking

服务有自己的上下文,您可以使用它,因为您担心在服务中获取 IMEI,请使用以下代码:

public class MyService extends Service {
    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.v("ranjith","started service");
        TelephonyManager c=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
        String device_id = c.getDeviceId();
        return super.onStartCommand(intent, flags, startId);
    }
}

关于如何将上下文传递给非Activity class的问题,答案只是将其作为构造函数中的参数传递给另一个class,例如:-

public class myActivityclass extends Activity{
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout1);
        nonActivityclass c=new nonActivityclass(Context context);
        -----------------------------
}

中非Activity class:

public class nonActivityclass{
Context context;
public nonActivityclass(Context context)
{
         this.context=context
}
//you can use context now
}

我在我的 App.java class -> OnCreate 方法中调用了一个线程,我得到的设备 IMEI 是这样的:

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

String IMEI = telephonyManager.getDeviceId();

将上下文通过参数传递给您的实现就足够了