Smartphones, due to the integration of low-cost GNSS chips and linearly polarized antennas, frequently experience abnormal errors in their observations, particularly during positioning on water surfaces. In response to this issue, this paper proposes a method for detecting and correcting abnormal errors in GNSS observations on smartphones. Firstly, the state and observation equations of the Kalman filter are formulated based on the continuous and smooth characteristics of pseudorange and carrier observations. Secondly, real-time detection of abnormal error occurrence in observations is performed by assessing whether the difference between the predicted and observed values computed by the Kalman filter exceeds a specified threshold. Finally, depending on abnormal errors within the epoch, different strategies are applied for real-time reparation of observations containing anomalies. Two smartphones have been used for static tests on land and kinematic tests on water. Results show that under various environmental conditions, the proposed method effectively enhances the quality of observations on smartphones. Specifically, the method achieved a maximum improvement of 86.03% in pseudorange quality and 84.31% in carrier phase quality. The method proposed in this paper outperformed the State-Based method by approximately 10% on land and by 10–35% on water. It also shows high stability and reliability, particularly in complex environments such as navigation on water.