SignupUrl signupUrl = androidManagementClient
.signupUrls()
.create()
.setProjectId(CLOUD_PROJECT_ID)
.setCallbackUrl(CALLBACKURL).execute();
вызывает приложение взломать sh из-за NPE
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.api.services.androidmanagement.v1.AndroidManagement$SignupUrls com.google.api.services.androidmanagement.v1.AndroidManagement.signupUrls()' on a null object reference
Кто-нибудь видел это раньше? Я выполнил все предварительные условия для разработки и в настоящее время собираюсь выйти из примера приложения, и этот фрагмент кода вылетает. В чем может быть причина?
https://developers.google.com/android/management/sample-app
Обновление согласно запросу:
Код
EnterpriseHelperClass - я бы Мне нравится делать это программно, хотя я знаю, что это легко можно выполнить с помощью руководства по быстрому запуску.
public class EnterpriseCreationHelper {
private static final String CALLBACKURL =
"https://play.google.com/work/adminsignup?enterpriseToken";
private static final String TAG = "MainActivity";
private static String CLOUD_PROJECT_ID = "******-43211";
private static String SERVICE_ACCOUNT = "****@****-432111.iam.gserviceaccount.com";
private static String CREDENTIALS_FILE =
"/Users/****/appname/src/******.json";
private static String POLICY_ID = "samplePolicy";
private static AndroidManagement androidManagementClient;
public EnterpriseCreationHelper(AndroidManagement androidManagementClient){
EnterpriseCreationHelper.androidManagementClient = androidManagementClient;
}
public void run() throws IOException {
//Where the enterprise creates
String enterpriseName = createEnterprise();
System.out.println("Enterprise name is: " + enterpriseName);
//Where the enrollment token is created - to enroll the device
String enrollment_token = createEnrollmentToken(enterpriseName, POLICY_ID);
System.out.println("My enrollment token is: " + enrollment_token);
}
private String createEnterprise() throws IOException{
//Initiates the Sign-up Process - returning null for some reason?
System.out.println("Creating the sign up URL");
SignupUrl signupUrl = androidManagementClient
.signupUrls().create()
.setProjectId(CLOUD_PROJECT_ID)
.setCallbackUrl(CALLBACKURL).execute();
Log.d(TAG, "createEnterprise: signupurl is " + signupUrl);
System.out.println("To sign up for a new enterprise, open this URL in your browser: ");
System.out.println(signupUrl.getUrl());
System.out.println("After signup, you will see an error page in the browser.");
System.out.println("Paste the enterpriseToken value from the error page URL here: ");
String enterpriseToken = new BufferedReader(new InputStreamReader(System.in)).readLine();
//Create the enterprise
System.out.println("Creating the enterprise");
return androidManagementClient.enterprises().create(new Enterprise())
.setProjectId(CLOUD_PROJECT_ID).setSignupUrlName(signupUrl.getName())
.setEnterpriseToken(enterpriseToken)
.execute().getName();
}
private String createEnrollmentToken(String enterpriseName, String policyId) throws IOException{
System.out.println("Creating an enrollment token");
EnrollmentToken token = new EnrollmentToken().setPolicyName(policyId).setDuration("86400s");
return androidManagementClient.enterprises().enrollmentTokens().create(enterpriseName, token)
.execute().getValue();
}
}
*** Обновление ****
Я могу двигаться вперед с аутентификация в клиенте. Здесь я пытаюсь выполнить POST-запрос, используя модернизацию, чтобы добавить sh учетную запись службы в область для аутентификации в клиенте API управления Android. Тем не менее, я заблокирован, так как с тех пор, как я последний раз использовал модификацию, это было давно, но метод enqueue не приходит из моего звонка через сетевой сервис. Пожалуйста, смотрите код ниже. Кто-нибудь сталкивался с проблемами, в которых очередь не показалась для них?
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://androidmanagement.googleapis.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
private NetworkService networkService = retrofit.create(NetworkService.class);
Call<Post> credentialsPost = networkService.authenticate(serviceAccount);
//this next line should be the enqueue but it doesn't show up when I try to extract it from credentialsPost.