تتيح حزمة تطوير البرامج (SDK) لواجهة برمجة التطبيقات Android Management API (AMAPI) لتطبيق إضافة محدّد من إدارة الخدمات الجوّالة للمؤسسات (EMM)
التواصل مباشرةً مع تطبيق Android Device Policy (ADP) وتنفيذ Commands
على الجهاز.
تقدّم مقالة الدمج مع حزمة تطوير البرامج (SDK) لـ AMAPI مزيدًا من المعلومات عن هذه المكتبة وكيفية إضافتها إلى تطبيقك.
بعد دمج حزمة تطوير البرامج (SDK)، يمكن لتطبيق الإضافة التواصل مع ADP لتنفيذ ما يلي:
إصدار أمر
يمكن لتطبيق إضافة طلب إصدار أوامر باستخدام ADP.
يحتوي IssueCommandRequest
على عنصر الطلب الذي سيحتوي على تفاصيل عن
الأمر الذي سيتم إصداره ومعلمات محدّدة.
يوضّح المقتطف التالي كيفية إصدار طلب لمحو بيانات الحزمة:
import android.util.Log;
...
import com.google.android.managementapi.commands.LocalCommandClientFactory;
import com.google.android.managementapi.commands.model.Command;
import com.google.android.managementapi.commands.model.GetCommandRequest;
import com.google.android.managementapi.commands.model.IssueCommandRequest;
import com.google.android.managementapi.commands.model.IssueCommandRequest.ClearAppsData;
import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.MoreExecutors;
...
void issueClearAppDataCommand(ImmutableList<String> packageNames) {
Futures.addCallback(
LocalCommandClientFactory.create(getContext())
.issueCommand(createClearAppRequest(packageNames)),
new FutureCallback<Command>() {
@Override
public void onSuccess(Command result) {
// Process the returned command result here
Log.i(TAG, "Successfully issued command");
}
@Override
public void onFailure(Throwable t) {
Log.e(TAG, "Failed to issue command", t);
}
},
MoreExecutors.directExecutor());
}
IssueCommandRequest createClearAppRequest(ImmutableList<String> packageNames) {
return IssueCommandRequest.builder()
.setClearAppsData(
ClearAppsData.builder()
.setPackageNames(packageNames)
.build()
)
.build();
}
...
يوضّح المثال السابق إصدار طلب واضح لبيانات التطبيق لحزمات
محدّدة والانتظار إلى أن يتم إصدار الأمر بنجاح. في حال
إصداره بنجاح، سيتم عرض عنصر Command
يتضمّن الحالة الراهنة
للأمر ورقم تعريفه الذي يمكن استخدامه لاحقًا للاستعلام عن حالة
أي أوامر تستغرق وقتًا طويلاً في التنفيذ.
الحصول على الأمر
يمكن لتطبيق الإضافة الاستعلام عن حالة طلبات الأوامر التي تم إصدارها سابقًا. ل retrieving a command's status، ستحتاج إلى معرّف الأمر (متاح من
طلب إصدار الأمر). يوضّح المقتطف التالي كيفية إرسال ملف
GetCommandRequest
إلى ADP.
import android.util.Log;
...
import com.google.android.managementapi.commands.LocalCommandClientFactory;
...
import com.google.android.managementapi.commands.model.GetCommandRequest;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.MoreExecutors;
...
void getCommand(String commandId) {
Futures.addCallback(
LocalCommandClientFactory.create(getApplication())
.getCommand(GetCommandRequest.builder().setCommandId(commandId).build()),
new FutureCallback<Command>() {
@Override
public void onSuccess(Command result) {
// Process the returned command result here
Log.i(Constants.TAG, "Successfully issued command");
}
@Override
public void onFailure(Throwable t) {
Log.e(Constants.TAG, "Failed to issue command", t);
}
},
MoreExecutors.directExecutor());
}
...
الاستماع إلى عمليات الاستدعاء المتعلّقة بتغيير حالة الطلب
يمكن لتطبيق إضافة تسجيل مكالمة اختياريًا لتلقّي آخر المعلومات المتعلّقة بتغييرات حالة الأوامر التي تستغرق وقتًا طويلاً باتّباع الخطوات التالية:
- يتم إرسال إشعارات إلى
CommandListener
بشأن التغييرات في حالة الأوامر، ويجب تنفيذ هذه الواجهة في تطبيقك وتقديم معلومات عن كيفية التعامل مع آخر المعلومات الواردة حول الحالة. - وسِّع
NotificationReceiverService
و قدِّم مثيلًاCommandListener
من خلالgetCommandListener
الطريقة. حدِّد اسم فئة
NotificationReceiverService
الموسّعة في سياسة واجهة برمجة التطبيقات لإدارة Android (راجِع إعداد السياسة).import com.google.android.managementapi.commands.CommandListener; import com.google.android.managementapi.notification.NotificationReceiverService; ... public class SampleCommandService extends NotificationReceiverService { @Override public CommandListener getCommandListener() { // return the concrete implementation from previous step return ...; } }
ضبط السياسة
لتفعيل تطبيق الإضافة للتواصل مباشرةً مع ADP، على خدمة إدارة الخدمات الجوّالة (EMM)
توفير سياسة extensionConfig
.
"applications": [{
"packageName": "com.amapi.extensibility.demo",
...
"extensionConfig": {
"signingKeyFingerprintsSha256": [
// Include signing key of extension app
],
// Optional if callback is implemented
"notificationReceiver": "com.amapi.extensibility.demo.notification.SampleCommandService"
}
}]
الاختبار
اختبار الوحدة
LocalCommandClient
هي واجهة، وبالتالي تسمح بتوفير تنفيذ قابل للتحقّق منه.
اختبار الدمج
ستحتاج إلى المعلومات التالية للاختبار مع ADP:
- اسم حزمة تطبيق الإضافة
- تجزئة SHA-256 بترميز سداسي عشري للتوقيع المرتبط بحزمة التطبيق
- اختياريًا، في حال اختبار طلب معاودة الاتصال، اسم مؤهَّل بالكامل للخدمة من
الخدمة التي تم طرحها حديثًا لتفعيل طلب معاودة الاتصال. (الاسم المؤهّل بالكامل ل
CommandService
في المثال)