Reputation: 11
How can I prompt users for runtime permissions for accessing fuel level which is implemented using the Car library? I aim to present a popup for users to allow or deny permission when they first visit the app. I've searched extensively, but haven't found any guidance in the official documentation or elsewhere. While I'm familiar with managing runtime permissions for Android apps, I'm unsure about the process for Android Auto apps.
Below is my current code
public class HomeScreen extends Screen {
private Row fuelLevelRow;
private CarHardwareManager carHardwareManager;
private CarInfo carInfo;
public HomeScreen(CarContext carContext) {
super(carContext);
carHardwareManager = carContext.getCarService(CarHardwareManager.class);
carInfo = carHardwareManager.getCarInfo();
setupListeners();
}
@NonNull
@Override
public Template onGetTemplate() {
return new PaneTemplate.Builder(new Pane.Builder()
.addRow(fuelLevelRow != null ? fuelLevelRow : createFetchingRow("Fuel Level"))
.build()).setTitle("FUEL abc").build();
}
private Row createFetchingRow(String title) {
return new Row.Builder()
.setTitle(title)
.addText("Fetching data...")
.build();
}
private void setupListeners() {
if (carInfo == null) {
Log.e("HomeScreen", "CarInfo is null");
return;
}
// Listener for fuel level
carInfo.addEnergyLevelListener(getCarContext().getMainExecutor(), new OnCarDataAvailableListener<EnergyLevel>() {
@Override
public void onCarDataAvailable(@NonNull EnergyLevel data) {
if (data.getFuelPercent().getStatus() == CarValue.STATUS_SUCCESS) {
float rangeRemaining = data.getFuelPercent().getValue();
float rangeRemainingMeters = data.getRangeRemainingMeters().getValue();
fuelLevelRow = new Row.Builder()
.setTitle("Fuel Level")
.addText(String.valueOf(rangeRemaining) + "%")
.addText("Range Remaining (meters): " + rangeRemainingMeters)
.build();
}
}
});
}
I am looking for a solution to implement runtime permissions in my Android Auto app, where users are presented with a popup to allow or deny permissions.
Also, I would like to know, if OEM does not allow car to revert with data in sensors, Can I use OBD to get Car data? If yes, can you please state any clue for the libraries or APIs to use?
Thankyou
Upvotes: 1
Views: 144
Reputation: 1447
For requesting permissions, have you tried the CarContext::requestPermissions
API?
Upvotes: 0