As smartphones acquire a heterogeneous set of network interfaces provisioned by a variety of providers, smartphone applications have an opportunity to choose amongst multiple services based on the functionality, cost and user-desired quality of experience (QoE). In this work, we propose a framework that predicts the service that suits the application best in terms of QoE while saving energy and dollar costs. We develop a prototype system called 'Adapp,' that trains itself online using user feedbacks and its prediction accuracy improves over use. We demonstrate with the help of rigorous experiments, how different users have varying service preferences for the same application, while the same user can have different preferences across applications. Experimental results validate the adaptive nature of the system. We also analyze Adapp's accuracy in selecting the most appropriate service.