Mobile applications (apps) present both great opportunities and new challenges to software industry. Most of the apps are developed by small teams that could not afford expensive software process and maintain appropriate documentations. It would be interesting and pragmatic to develop testing tools to help test engineers in such a situation. We develop a software tool that crawls through the screen activities of an app to automatically learn the finite-state machine (FSM) of the app and then generates test cases with a certain adequacy criterion. A research issue is how traditional coverage techniques work with such learned FSMs. We evaluate the bug-revealing capabilities of previous test case generation algorithms for such FSMs. Then we propose a new test case generation algorithm and carried out experiment to compare our algorithm with previous algorithms in the literature. We found that our algorithm is more efficient and more effective in revealing bugs than the others.