This is the latest stop for the 33-year-old, who started three games for the Washington Redskins last year, completing 52 of 91 passes for 590 yards, 3 touchdowns and 4 interceptions.
A fifth-round pick by the Tampa Bay Buccaneers in the 2008 draft, he has bounced around from team to team and league to league throughout his pro football career.
The Lions mark the 13th NFL team for Johnson, who also played for the Sacramento Mountain Lions of the United Football League and was expected to play for the San Diego Fleet of the Alliance of American Football before Washington signed him last year.
He has played in 33 career NFL games -- starting eight -- and has completed 148 of 268 passes for 1,632 yards, 8 touchdowns and 14 interceptions. His most significant action came early in his career in Tampa Bay, when he appeared in 26 games with five starts -- the Bucs didn't win any of the games he started.
Johnson picked up his first NFL win as a starter last season for Washington.
Detroit needed to sign Johnson after Tom Savage suffered an undisclosed injury in the first quarter of Thursday night's 31-3 loss to New England. Savage, who had been in line to become Stafford's backup quarterback, has been placed in the concussion protocol, coach Matt Patricia said Saturday.
Savage has now been in concussion protocol in 2016, 2017 and 2019. The 2017 concussion was looked at by the NFL because the protocol protections were questioned following the hit that eventually landed him on injured reserve.
With it being unclear how long he'll be out, the Lions needed to add another quarterback to the roster besides Stafford and David Fales.
Johnson has familiarity with Lions quarterback coach Sean Ryan from their brief time together in Houston. Johnson was with the Texans for about two months in 2017.
"It's always difficult to bring in a quarterback mid-training camp," Patricia said. "One of the things that we try and look for is any sort of familiarity with players that we bring in, quarterbacks, linebackers, could be anything that's a communication piece. He spent time with our quarterbacks coach down in Houston so they have a great working relationship down there and just knowing Josh as a person and competing in that world, it was just kind of an easy sort-of, brought him in, brought a couple guys in and was someone that we thought could step in mid-stride here and go."
The Lions also made a flurry of other moves Saturday: activating defensive end Trey Flowers from the physically unable to perform list, placing wide receiver Jermaine Kearse and defensive lineman Darius Kilgo on injured reserve, signing running back Justin Stockton and waiving cornerback Tarvarus McFadden from injured reserve.