2016-04-25 4 views
1

)を返します。テスト時にはBluetooth接続を無効にして、モバイルデバイスにGoogle API呼び出しを行います。結果は常に、ステータスコードの成功を返す場合でも、そのこれ以上の接続が要求PendingResult.setResultCallback()は、モバイルデバイスとGoogleウォッチを正常に接続してからステータスコード成功(

class DataTask extends AsyncTask<Node, Void, Void> { 

    @Override 
    protected Void doInBackground(Node... nodes) { 
     Gson gson = new Gson(); 
     Request requestObject = new Request(); 
     requestObject.setType(Constants.REQUEST_TYPE); 
     String jsonString = gson.toJson(requestObject); 

     PutDataMapRequest dataMap = PutDataMapRequest.create(Constants.PATH_REQUEST); 
     dataMap.setUrgent(); 
     dataMap.getDataMap().putString(Constants.KEY_REQUEST, jsonString); 
     PutDataRequest request = dataMap.asPutDataRequest(); 
     DataApi.DataItemResult dataItemResult = Wearable.DataApi 
       .putDataItem(googleApiClient, request).await(); 

     boolean connected = googleApiClient.isConnected(); 
     PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(googleApiClient, request); 
     pendingResult.setResultCallback(new ResultCallback<DataApi.DataItemResult>() { 
      @Override 
      public void onResult(@NonNull DataApi.DataItemResult dataItemResult) { 
       com.google.android.gms.common.api.Status status = dataItemResult.getStatus(); 

       DataItem dataItem = dataItemResult.getDataItem(); 
       boolean dataValid = dataItemResult.getDataItem().isDataValid(); 
       boolean canceled = status.isCanceled(); 
       boolean interrupted = status.isInterrupted(); 
       float statusCode = status.getStatusCode(); 


       if(status.isSuccess()){ // expected to be false because there is no bluetooth connection anymore 
        Log.d(TAG, "Success"); 
       }else{ 
        Log.d(TAG, "Failure"); 
       } 
      } 
     }); 
     return null; 
    } 
} 

ため

非同期タスクがあるので成功しない理由を私はstatus.isSuccessための虚偽を得ることはありませんか?

Wearable.NodeApi.getConnectedNodes(googleApiClient).await().getNodes(); 
if(connectedNodes.size() == 0){ 
    // no connection 
} 

が、要求が正常にResultCallbackの中にあったかどうかを確認することはできません。

私が見つけた唯一の解決策は、AsyncTask内で、次のコードを記述するのですか?

答えて

関連する問題