Android

使用 Android Intents 连接印象笔记


Android 的设计使得不同应用间的合作很容易,所以它是一个开发和印象笔记交互的应用的很好的平台。你的 Android 应用可以通过两种方式与印象笔记交互:通过印象笔记 web 服务 API,和通过 intents

开始

使用印象笔记 API

你的 Android 应用可以使用我们的 API 与印象笔记 web 服务直接通讯。使用 API 可以给你所有访问用户印象笔记帐户的权限。你可以创建新笔记,搜索,读取和更新已有笔记,并且可以进行任何我们自己的客户端可以进行的操作。你使用这些 API 并不需要用户安装印象笔记 Android 客户端。

为了在 Android 上使用印象笔记 API,你的应用需要导入我们的 API 客户端 Java 库和 Apache Thrift runtime 库,也就是 lib/java/evernote-api-[version].jarlib/java/libthrift.jar。另外,你需要使用 src/android 中针对 Android 平台的代码,它比默认的 Thrift 代码更高效地利用了内存。你可以在 API ZIP 包中的 sample/android/HelloEDAM 下找到一个展示 API 用法的简单的 Android 应用。

使用 Intent

印象笔记 Android 客户端支持一系列 intent,你的应用可以发送这些 intent 给 Android 客户端来进行各种操作,例如创建一个带有图像的新笔记。与印象笔记 Android 客户端整合要比单独使用我们的 API 要容易,因为我们处理了网络通讯和错误处理等问题。但是,这些操作可以使用的前提是用户在他们的设备上安装并登陆了印象笔记 Android 2.0 或更高版本。

为了展示这是如何工作的,请先在你的设备上安装印象笔记 Android 客户端,并且打开你的图库。选择一个图片,然后点击菜单按钮并点击“共享”。你应该在可以共享图片的应用的列表中看到“印象笔记 - 创建笔记”。选择印象笔记后,你会看到我们的“新建笔记”界面。在这里,你的相片被添加成为笔记的附件。

下面的列表列出了你可以发送给印象笔记 Android 客户端的 intent。 你可以在我们的 API ZIP 包中的 sample/android/HelloEvernote 下找到使用这些 intent 的示例代码。

Action Data Type Result
SEND application/*
image/*
audio/*
video/*
text/*

标准的 Android SEND action 可以用来发送文件给印象笔记 Android 客户端。你需要使用 EXTRA_STREAM 域来指定你需要发送的文件的 Uri 地址。

你可以使用 EXTRA_TITLEEXTRA_SUBJECT 域来指定新笔记的标题。

被调用时,印象笔记将显示“新笔记”界面,而加入的文件表示为 attachment

我们的 Android 示例代码中的 "shareImage" 函数展示了这个 intent 的用法。

text/plain

如果要建立一个包含已经按照 ENML 格式建立好的文本内容的新笔记,可以直接把文本放在 EXTRA_TEXT 域中。

你可以使用 EXTRA_TITLEEXTRA_SUBJECT 域来指定新笔记的标题。

被调用时,印象笔记将显示“新笔记”界面,而新添加的文本被显示在笔记内容中。

我们的 Android 示例代码中的 "newNoteWithContent" 函数展示了这个 intent 的用法。

file://path application/enex

如果你想精确地控制笔记的内容,你可以创建一个符合印象笔记导出文件格式的文件,它的格式由 Evernote Export DTD (http://xml.evernote.com/pub/evernote-export.dtd)描述。

被调用时,印象笔记 Android 客户端会验证你的文件的格式正确性,并把你的新笔记加入到上传队列中。此过程中没有用户界面显示出来。

我们的 Android 示例代码中的 "newNoteWithContent" 和 "newNoteWithContentAndAttachment" 函数展示了这个 intent 的用法。

SEND_MULTIPLE application/*
image/*
audio/*
video/*
text/*

你可以使用标准的 Android SEND_MULTIPLE action 来向印象笔记 Android 版发送多个文件。使用 EXTRA_STREAM 域来指定你想要发送的文件的 Uri。

You can specify a title for the new note using the EXTRA_TITLE or EXTRA_SUBJECT field.

你可以使用 EXTRA_TITLE 或者 EXTRA_SUBJECT 域来为新笔记指定一个标题

com.evernote.action.CREATE_NEW_NOTE

这个 action 可以使你最大程度地控制对印象笔记 Android 版 New Note activity 的信息传递。被调用时,印象笔记 Android 版会显示 “new note” 的 UI,就好像用户在印象笔记 widget 上触摸 “new note” 按钮一样。

你可以使用 EXTRA_TITLE 域来为新笔记指定一个标题。

你可以使用 EXTRA_TEXT 域来为新笔记指定纯文本内容。

你可以通过传入 NOTEBOOK_GUID 这一额外的域(带有 String 类型的笔记本 GUID)来为新笔记指定笔记本。这个笔记本必须已经存在。

你可以通过传入 TAG_NAME_LIST 这一额外的域(带有标签名的 String ArrayList)来为新笔记指定标签。如果标签不存在,那它会被创建。

你可以通过向 AUTHOR 这一额外域传入一个 String 来指定笔记的 author 属性。

你可以通过向 SOURCE_URL 这一额外域传入一个 String 来指定笔记的 sourceURL 属性。

你可以通过向 SOURCE_APP 这一额外域传入一个 String 来指定笔记的 sourceApplication

你可以使用 EXTRA_STREAM 域指定文件的 Uri,为新笔记附加一个或多个文件。

在我们的 Android 示例代码中,函数 “newNoteWithContent” 和 “newNoteWithContentAttachment” 展示了此 intent 的用法。

此 intent 只在印象笔记 Android 3.0 或之后的版本中可用。

com.evernote.action.SEARCH_NOTES

SEARCH_NOTES action 被用来在印象笔记 Android 客户端中执行查询操作。你需要使用 QUERY 域来指定你的查询字符串

被调用时,印象笔记 Android 客户端将会显示一个包含符合你查询关键词的笔记列表的界面。如果你没有传入查询关键词,所有的笔记都会显示出来。

我们的 Android 示例代码中的 "doSearch" 函数展示了这个 intent 的用法。

此 intent 在印象笔记 Android 客户端 2.5.1 或以上版本支持。

com.evernote.action.VIEW_NOTE

VIEW_NOTE action 被用来在印象笔记 Android 客户端中显示单独的一个笔记。你可以通过在 NOTE_GUID 域中指定笔记的 GUID 来查看特定的笔记。

被调用时,印象笔记 Android 客户端会显示指定 GUID 的笔记。如果这里没有符合这个 GUID 的笔记,那么笔记查看器会显示用户当前笔记列表的第一条笔记。

你可以通过传入 FULL_SCREEN 域并指定值为 "true" 来使笔记查看器全屏显示笔记内容而不显示印象笔记在屏幕顶端的标题栏。

我们的 Android 示例代码中的 "viewNote" 函数展示了这个 intent 的用法。

此 intent 在印象笔记 Android 客户端 2.5.1 或以上版本支持。

com.evernote.action.NEW_SNAPSHOT

被调用时,印象笔记 Android 客户端将显示相机界面,就像用户在印象笔记 widget 中点击“新照片笔记”的效果。

你不能使用这个 intent 传递更多的附加信息。

com.evernote.action.NEW_VOICE_NOTE

被调用时,印象笔记 Android 客户端将显示一个空的“新笔记”界面,并且录音机开始录音,就像用户在印象笔记 widget 中点击“新语音笔记”的效果。

你不能使用这个 intent 传递更多的附加信息。

com.evernote.action.SEARCH

被调用时,印象笔记 Android 客户端将显示印象笔记搜索界面,就像用户在印象笔记 widget 中点击“搜索”的效果。

你不能使用这个 intent 传递更多的附加信息。