Судя по вашему javado c, вам нужен Application
Context
(а не Acitivity
контекст). Итак, вы должны сделать это следующим образом:
@Singleton
public class ScannerFactory {
private final Context context;
@Inject
public ScannerFactory(@ApplicationContext Context context) {
this.context = context;
}
/**
* Get the scanner device
*
* @param scannerType - The scanner type, one of A or B
* @return
*/
public static ScannerDevice getScannerDevice(final String scannerType) {
if (scannerType.equals("A")) {
return new DeviceA(context);
} else if (scannerType.equals("B")) {
return new DeviceB(context);
}
throw new IllegalArgumentException("Wrong device");
}
}
, а затем, когда вы захотите это использовать, вы следуете обычным правилам для Injecting
зависимостей, используя Hilt . Так например:
@AndroidEntryPoint
public class MainActivity extends AppCompatActivity {
@Inject
ScannerFactory scannerFactory;
//... rest of the Activity code
}