我目前正在开发一个Android应用程序,以便显示主屏幕小部件。它们与Microsoft Outlook (事件+消息)相关,以便在一种动态磁贴中显示传入的事件和未读的新消息。
Msal图库帮助我验证和检索包含每个事件/消息结果的标识符的信息
但现在我想知道用户设备上是否安装了outlook应用程序,以及当用户单击小部件时是否有打开Outlook的方法。此外,用户是否可以打开具有该标识符的对应的点击事件或消息。
例如,当前显示生日事件的事件小部件。用户点击它。然后,它打开Outlook并直接显示该生日事件。
问候
发布于 2019-08-23 02:41:14
我不认为这在某些地方是官方记录的。但以下是您可以做的了解它的方法。
您可以列出设备上安装的所有Microsoft应用程序...
val packages = context.packageManager
.getInstalledApplications(PackageManager.GET_META_DATA)
for (info in packages) {
if(info.packageName.startsWith("com.microsoft", true)){
Log.d("package name:" + info.packageName)
Log.d("Launch Activity: " + context.packageManager.getLaunchIntentForPackage(info.packageName))
}
}
记下LogCat中显示的“启动意图”。你可以用它来启动Outlook。只需确保您不会硬编码这些值,因为Microsoft可以在任何时候更改这些值,例如,activity类可以更改。所以,与其这样做..。
context.startActivity(
Intent().apply {
action = Intent.ACTION_MAIN
addCategory(Intent.CATEGORY_LAUNCHER)
setPackage("com.microsoft.office.outlook")
component = ComponentName("com.microsoft.office.outlook", "com.microsoft.office.outlook.MainActivity")
}
)
这样做..。
context.startActivity(
Intent().apply {
action = Intent.ACTION_MAIN
addCategory(Intent.CATEGORY_LAUNCHER)
component = ComponentName(
outlookLaunchIntent?.component?.packageName,
outlookLaunchIntent?.component?.className
)
setPackage(outlookLaunchIntent.package)
}
)
另外,请记住getLaunchIntentForPackage
和component
可以返回null,因此请确保正确检查NULL值
发布于 2019-09-19 00:24:13
我转述了一对内部人士的建议:
请尝试使用以下URL之一打开事件:
由于不可变in在Microsoft Graph中仍处于预览阶段,并且客户不应在其生产应用程序中使用预览API,因此我认为选项#1适用于您的情况。
如果URL有效或不起作用,以及您有其他相关问题,请在此处回复。我要求这两个人也关注这个帖子。
发布于 2019-08-26 22:21:37
在你的代码@Leo的帮助下,我成功地打开了outlook android应用程序。由于我不是用Kotlin开发的,我将在下面发布JAVA代码:
Intent outlookLaunchIntent = context.getPackageManager().getLaunchIntentForPackage("com.microsoft.office.outlook");
if (outlookLaunchIntent != null) {
context.startActivity(outlookLaunchIntent );
}
下面的代码用于在web浏览器中打开由图形API的webLink属性提供的事件/消息。(我只测试事件和提供的网址不工作。我会在StackOverFlow上发布一个新的问题,但是你已经在那里看到了这个问题:https://github.com/microsoftgraph/microsoft-graph-docs/issues/4203
try {
Intent webIntent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(calendarWebLink));
webIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(webIntent);
} catch (RuntimeException e) {
// The url is invalid, maybe missing http://
e.printStackTrace();
}
然而,我仍然坚持我的小部件项目点击的欺骗性目标,即在Microsoft Outlook Android应用程序中打开相关事件/电子邮件。
微软Outlook安卓应用程序包含的小工具,可以实现我正在寻找的。所以我想知道是否可以列出它的广播接收器。
我找到的最好的东西是那个应用程序的旧清单,但它对我没有帮助。https://gist.github.com/RyPope/df0e61f477af4b73865cd72bdaa7d8c2
https://stackoverflow.com/questions/57618826
复制相似问题