集成 Air Watch Android Studio
Posted
技术标签:
【中文标题】集成 Air Watch Android Studio【英文标题】:Integrating Air Watch Android Studio 【发布时间】:2017-02-08 12:07:08 【问题描述】:我对 AirWatch 概念非常陌生,但对 AirWatch 的了解非常透彻。我浏览了以下链接,
http://developer.air-watch.com/android/application-configuration-with-the-android-sdk/
http://developer.air-watch.com/android/android-sdk-setup/
但徒劳无功。
谁能帮助我了解如何将 Air Watch 集成到 Android 中?
到目前为止我做过的事情,
我在https://apidev.awmdm.com 中创建了应用程序,并添加了assignemnts。这里的问题是,我如何才能在我的 Android 应用程序中获取在 Air Watch 控制台中添加的分配详细信息。
非常感谢您的帮助。
更新:
我能够创建应用程序并将其从 AIR WATCH CONSOLE 推送到我的设备。现在,我面临的问题是,如果我在 AIR WATCH CONSOLE 中添加一些应用程序配置,我无法在我的应用程序中获取这些详细信息。
对于上述场景,我已经浏览了以下网址,
https://appconfig.org/android/ 与https://appconfig.org/ios/ 非常相似
我已经实现了上面 url 中提到的那些东西,但我仍然无法获得这些细节。如果我在任何地方错了,请告诉我。
我知道在 Air watch 控制台中传递的键值对将进入 iOS 中的 com.apple.configuration.managed
键。有没有人知道这些键值对将如何出现。据我所知,他们将通过Restriction Manager
处理。但不知道/不知道如何在 Android 中处理。
更新:
xml/app_restrictions.xml:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<restriction
android:key="ManagedServer"
android:restrictionType="string"
android:title="Managed Server"
tools:ignore="ValidRestrictions" />
<restriction
android:key="@string/mdm_key_managed_server_name"
android:restrictionType="string"
android:title="@string/mdm_key_managed_server_url"
tools:ignore="ValidRestrictions" />
<restriction
android:key="@string/mdm_key_managed_server_url"
android:restrictionType="string"
android:title="@string/mdm_key_managed_server_url"
tools:ignore="ValidRestrictions" />
</restrictions>
oncreate
方法:
IntentFilter restrictionsFilter =
new IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED);
BroadcastReceiver restrictionsReceiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
// Get the current configuration bundle
Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions();
// Check current configuration settings, change your app's UI and
// functionality as necessary.
Toast.makeText(LoginActivity.this, "Reciever Called", Toast.LENGTH_LONG).show();
RestrictionsManager myRestrictionsMgr =
(RestrictionsManager)
getSystemService(Context.RESTRICTIONS_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP)
if (myRestrictionsMgr != null)
Bundle appRestrictions = myRestrictionsMgr.getApplicationRestrictions();
if (appRestrictions != null)
if (appRestrictions.containsKey("ManagedServer"))
String mConfigDetails = appRestrictions.getString("Managed Server");
Toast.makeText(LoginActivity.this, "" + mConfigDetails, Toast.LENGTH_LONG).show();
;
registerReceiver(restrictionsReceiver, restrictionsFilter);
用户列表:
当我实际尝试其他命令时:
更新:
创建了一个示例应用并发布到 Play 商店。应用链接如下,
https://play.google.com/store/apps/details?id=com.manu.samplemdm
现在,它是一个 Play 商店应用。当我发送应用程序配置但无法在应用程序中接收它时。它给了我应用程序中的空包。
非常感谢您的帮助。
非常感谢您的帮助
【问题讨论】:
【参考方案1】:除了 AirWatch 资源,它告诉您如何创建应用程序并设置应用程序配置、键值对以推送到您的设备,您需要查看 Android Restriction Manager API. 按照链接中描述的步骤操作。
整个过程的工作原理是,在您将 MDM 设置为 AirWatch 后,AirWatch 会控制 AndroidForWork 环境。然后,AirWatch 从 AirWatch 控制台管理设备,并将应用配置推送到您设备中的 AndroidForWork。您需要实施 Android Restriction Manager 才能访问您的 MDM 传递给您的这些数据。市场上的所有 MDM 都一样。
更新:
为了在开发阶段将您的应用安装到工作容器中,您可以使用adb
将其从Personal Container
复制到Work Container
。
首先,列出设备中的所有活跃用户:
./adb shell pm list users
稍后,从用户列表中找到 工作用户 ID,并在下面的命令中设置它以及您的应用程序包名称和应用程序的 Main Activity。 p>
./adb shell am start —user 13 -n “your.apps.package.name/your.main.activity.package.name”
命令中的 13 是工作用户的 ID。就我而言,是 13 岁。
有关托管配置文件中./adb
命令的更多信息,请参阅this link 并查看页面的最底部。
【讨论】:
我已经实现了 Android Restrictions Manager。但是,我怎样才能在我的应用程序中获得关键值。我在哪里得到那些。你能帮帮我吗?如果您有任何示例代码,那就太好了? @ManoharPerepa 如果您可以分享您的 Android 限制管理器实施,那么我可以告诉您哪里出错了。请用您的实施更新您的问题,然后 ping 我。 另一件事要提的是,据我所知,您正试图通过其标题获取“Manager Server”值,而不是您在 XML 文件中定义的“key”。您可以调试您的应用程序并检查捆绑实例吗?看看你提供的钥匙是真的错误还是完全是空的? 还要提一提的是,当您将应用程序安装到您的设备时,它不会自动安装到工作配置文件中,您确定该应用程序在“工作”容器中吗,例如它有应用图标上的小工作图标? @GeorgeHuang 您是否在restriction.xml 中定义了用户名?如果你这样做了,这是配置的第一部分。您需要访问您的 MDM 提供商的仪表板,无论是 airwatch 还是其他东西,并确保您在那里也提供了相同的键值对。【参考方案2】:有几种不同的方法可以与 AirWatch 集成。这取决于您尝试使用的技术集。根据我在您的帖子中看到的内容,我认为这些是与您最相关的 2 个:
-
AirWatch SDK
AppConfig 标准
这两种方法都可以完成类似的功能,但每种方法都有不同的部署要求。听起来您已经采用了第二种方法,即使用 AppConfig 标准和 Google 提供的本机 API 来让应用读取通过 AirWatch 传递的配置值。
需要注意的重要一点是,Android 上的 AppConfig 标准方法要求设备支持“Android for Work”注册,这是 Google 发布的一种相对较新的管理协议。值得注意的是,AirWatch 确实支持 Android for Work 注册,因此只需将 AirWatch 测试实例配置为“Android for Work 注册”而不是传统的旧 Android 注册协议。可以在此处找到有关 Android for Work 的更多信息: https://enterprise.google.com/android/solutions/personal/
如果您已经是 AirWatch 的客户,如果您尚未在其资源门户上创建一个帐户,以获取有关如何在 AirWatch 中设置 Android for Work 的文档,这可能会有所帮助。 https://resources.air-watch.com
我希望这会有所帮助。
【讨论】:
resources.air-watch.com。登录后链接失效。而且我的设备已经注册了 Android for Work。现在,如果我需要将一些设置从 Air watch 控制台发送到应用程序,请告诉我 我需要的是,当我在 Air watch 控制台中添加应用程序时,我正在控制台中添加一些应用程序配置详细信息。我如何才能将控制台中添加的那些详细信息添加到 android 应用程序中。 iOS 开发者可以通过 com.apple.configuration.managed 键获取设置。 android dev 有什么方法可以获取这些信息。以上是关于集成 Air Watch Android Studio的主要内容,如果未能解决你的问题,请参考以下文章
AIR32F103 在无系统环境和FreeRTOS环境集成LVGL