android – 如何正确检索将数据插入Google Fit的应用程序的包名?

前端之家收集整理的这篇文章主要介绍了android – 如何正确检索将数据插入Google Fit的应用程序的包名?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码用于从Google Fit检索用户活动列表:
  1. public void getActivitiesData(Date from,Date till) {
  2. DataReadRequest readRequest = new DataReadRequest.Builder()
  3. .aggregate(DataType.TYPE_ACTIVITY_SEGMENT,DataType.AGGREGATE_ACTIVITY_SUMMARY)
  4. .bucketByTime(1,TimeUnit.DAYS)
  5. .setTimeRange(from.getTime(),till.getTime(),TimeUnit.MILLISECONDS)
  6. .build();
  7.  
  8. Fitness.HistoryApi.readData(apiClient,readRequest).setResultCallback(new com.google.android.gms.common.api.ResultCallback<DataReadResult>() {
  9. @Override
  10. public void onResult(DataReadResult dataReadResult) {
  11. Status status = dataReadResult.getStatus();
  12. if (status.isSuccess()) {
  13.  
  14. for (Bucket bucket : dataReadResult.getBuckets()) {
  15. if (!bucket.getDataSets().isEmpty()) {
  16. DataSet dataSet = bucket.getDataSets().get(0);
  17. String sourceAppPackageName = getSourceAppPackageNameFromDataSet(dataSet);
  18. for (DataPoint dp : dataSet.getDataPoints()) {
  19. for (Field field : dp.getDataType().getFields()) {
  20. String fieldName = field.getName();
  21. if (fieldName != null && fieldName.equals("activity")) {
  22. String type = FitnessActivities.getValue(dp);
  23. Date from = new Date(dp.getStartTime(TimeUnit.MILLISECONDS));
  24. Date till = new Date(dp.getEndTime(TimeUnit.MILLISECONDS));
  25.  
  26. // store retrieved values to the data object,omitted
  27. }
  28. }
  29. }
  30. }
  31. }
  32. }
  33. }
  34. });
  35. }
  36.  
  37. private static String getSourceAppPackageNameFromDataSet(DataSet dataSet) {
  38. String result = null;
  39.  
  40. if (dataSet.getDataSource() != null) {
  41. result = dataSet.getDataSource().getAppPackageName();
  42. }
  43.  
  44. return result;
  45. }

要将活动插入Google Fit,我使用了Google健身应用和Runkeeper(目前,这些应用似乎只是与Fit集成的应用).

我的代码按预期检索这些活动,但是,对于每个活动,我的getSourceAppPackageNameFromDataSet()方法返回“com.google.android.gms”作为包名.根据Data Attribution section in Google Fit documentation,我希望该方法返回Runkeeper或Google Fit的包名,但这不会发生.

我做了一些可怕的错误,或者这是Google Fit中的错误

解决方法

DataPoint.getOriginalDataSource().getAppPackageName()将完成这一操作.它为我的Withings比例返回com.withings.wiscale2,而DataSet.getDataSource().getAppPackageName()总是返回com.google.android.gms.

这里有一个类似的问题:DataSource.getAppPackageName() always returns “com.google.android.gms” in Google Fit

猜你在找的Android相关文章