使ConnectionResult成为可分区或可序列化的对象

时间:2014-02-08 16:49:34

标签: android android-intent android-location

我们可以将parcelable或serializable对象附加到意图发送到其他活动,如下所示。

intent.putExtra(string,parceable);

我想发送ConnectionResult,但我看到ConnectionResult既不是可分区的也不是可序列化的。我不想使用任何静态字段。

有没有办法让这个ConnectionResult成为parcelable或serializable?

1 个答案:

答案 0 :(得分:0)

ConnectionResult不是parcelable,但它有一个构造函数,它接受一个errorCode和pendingIntent。这两个都是可以分配的。

所以,在您的服务中:

private void notifyUiFailedConnection(ConnectionResult result) {
    Intent intent = new Intent(FIT_NOTIFY_INTENT);
    intent.putExtra(FIT_EXTRA_NOTIFY_FAILED_STATUS_CODE, result.getErrorCode());
    intent.putExtra(FIT_EXTRA_NOTIFY_FAILED_INTENT, result.getResolution());
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}

在您的活动中:

private BroadcastReceiver mFitStatusReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Get extra data included in the Intent
        if (intent.hasExtra(GoogleFitService.FIT_EXTRA_NOTIFY_FAILED_STATUS_CODE) &&
                intent.hasExtra(GoogleFitService.FIT_EXTRA_NOTIFY_FAILED_STATUS_CODE)) {
            //Recreate the connection result
            int statusCode = intent.getIntExtra(GoogleFitService.FIT_EXTRA_NOTIFY_FAILED_STATUS_CODE, 0);
            PendingIntent pendingIntent = intent.getParcelableExtra(GoogleFitService.FIT_EXTRA_NOTIFY_FAILED_INTENT);
            ConnectionResult result = new ConnectionResult(statusCode, pendingIntent);
            fitHandleFailedConnection(result);
        }
    }
};