2017-04-25 70 views
0

我的代码:从意向用户等待结果

public void run() { 
    while (!done){ 
     try { 
      this.mListMessagesResponse = service.users().messages().list(userId).setQ("to:" + recipient).execute().getMessages(); 
      done = true; 
     } catch(UserRecoverableAuthIOException e) { 
      mActivity.startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION); 

      //wait result 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

我想等待从我的用户结果,重新开始我的循环。 我尝试了等待,但它不起作用。

+0

你能解释更多你想要做什么,因为如果你有一个UserRecoverableAuthIOException您startActivityForResult将只执行。 – Oussaki

+0

我收到了一个消息列表,如果我没有从我的用户(Gmail api)的许可,则启动askinf权限的意图,并且我想等待此权限以获取我的消息列表。 –

回答

2

你不需要while循环来从Activity获得结果。已经有一个内置函数来做到这一点。这是onActivityResult

从文档:

启动活动

static final int PICK_CONTACT_REQUEST = 1; // The request code 
... 
private void pickContact() { 
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts")); 
    pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers 
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST); 
} 

使用onActivityResult得到的结果。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Check which request we're responding to 
    if (requestCode == PICK_CONTACT_REQUEST) { 
     // Make sure the request was successful 
     if (resultCode == RESULT_OK) { 
      // The user picked a contact. 
      // The Intent's data Uri identifies which contact was selected. 

      // Do something with the contact here (bigger example below) 
     } 
    } 
} 

在这里看到更多Getting a Result from an Activity

+0

ty这个答案,但这并没有真正帮助我,我已经看过文档。但我只想在意图期间等待,当意图完成时,继续我的代码。 –

+0

@Clément这没有任何意义。你的整个while循环是基于异常的,根本不应该首先完成。使用'onActivityResult'获取你的列表'service.users()...' –

+0

我同意这有点奇怪,但它只是一个用户权限,只有当你下载应用程序时抛出1次,这就是为什么我只做例外。 –