我想要的是,从Gmail收到Gmail通知后,我想从服务中读取Gmail消息正文。当Gmail通知到达时,将会发生警报,并且我将在AlarmReceiver中获取全文。
我在这里找到了Android快速入门gsuits api:https://developers.google.com/gsuite/guides/android。但是这里仅描述有关Android Sdk和依赖项的信息。我没有找到捕获gmail正文的整个过程。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.google.android.gms:play-services-auth:15.0.1'
compile 'pub.devrel:easypermissions:0.3.0'
compile('com.google.api-client:google-api-client-android:1.23.0') {
exclude group: 'org.apache.httpcomponents'
}
compile('com.google.apis:google-api-services-<API>-<VERSION>') {
exclude group: 'org.apache.httpcomponents'
}}
之后,我可以在我的android应用程序中检索/获取gmail主体的详细步骤是什么?
[首先,您需要确保使用Google进行身份验证。您可以使用Firebase Auth来做到这一点(在使用前,您必须查看它的配置方式,提供了很好的文档):
val providers = arrayListOf(
AuthUI.IdpConfig.GoogleBuilder().build()
)
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RQ_FIREBASE_AUTH
)
一旦通过身份验证,您就可以使用FirebaseAuth.getInstance().currentUser
。
下一步将设置Gmail服务:
val credential = GoogleAccountCredential.usingOAuth2(
applicationContext, listOf(GmailScopes.GMAIL_LABELS, GmailScopes.GMAIL_READONLY)
)
.setBackOff(ExponentialBackOff())
.setSelectedAccountName(FirebaseAuth.getInstance().currentUser?.email)
val service = Gmail.Builder(
NetHttpTransport(), AndroidJsonFactory.getDefaultInstance(), credential
)
.setApplicationName("YourAppName")
.build()
请注意,以上当然不是生产准备就绪的东西。
最后,这是阅读部分:
val messageRead = service.users().messages()?.get(FirebaseAuth.getInstance().currentUser?.email, message?.id)?.setFormat("raw")?.execute()
所以您可以像这样messageRead?.snippet
瞥见邮件正文>
尽管有两点值得注意的东西:
您必须期待并处理UserRecoverableAuthIOException
异常。这是用户必须明确授权您的应用程序对消息执行某些操作的时候的要点
所有这些execute
调用都不是主线程的句柄。
希望有帮助! (对不起,没有时间写详细的方法)。