What you described sounds like the rheostat on the fuel level assembly in the tank is bad. The fuel level sensor consists of a float, a wire float arm, and a ceramic resistor card (rheostat). The position of the float arm indicates the fuel level. The fuel level sensor contains a variable resistor which changes resistance in correspondence with the position of the float arm.
The only way to confirm this is to remove the unit and check resistance from the rheostat. Basically, when moving the float up and down, the resistance (ohms) should change.
If you look at pic 1, I circled the part I'm referring to.
Here are directions for replacement of the component (if you decide to do that):
2004 GMC Truck Envoy 4WD L6-4.2L VIN S
Vehicle Power-train Management Sensors and Switches - Power-train Management Sensors and Switches - Computers and Control Systems Fuel Level Sensor Service and Repair Procedures
FUEL LEVEL SENSOR REPLACEMENT
1. Remove the fuel sender assembly.
2. Disconnect the fuel pump electrical connector.
3. Remove the retaining clip from the fuel level sensor connector.
4. Disconnect the electrical connector from under the fuel sender cover.
5. Remove the sensor retaining clip.
6. Squeeze the locking tangs and remove the fuel level sensor (3).
1. Install the fuel level sensor (3).
2. Install the sensor retaining clip.
3. Connect the electrical connector to the fuel level sensor.
4. Install the retaining clip to the fuel level sensor electrical connector.
5. Connect the fuel pump electrical connector.
6. Install the fuel sender assembly.
Let me know if this helps or if you have other questions.
Images (Click to enlarge)
Tuesday, September 15th, 2020 AT 5:56 PM