package fr.neamar.kiss.dataprovider; import android.content.pm.PackageManager; import java.util.ArrayList; import java.util.regex.Pattern; import fr.neamar.kiss.loader.LoadPhonePojos; import fr.neamar.kiss.pojo.PhonePojo; import fr.neamar.kiss.pojo.Pojo; public class PhoneProvider extends Provider<PhonePojo> { public static final String PHONE_SCHEME = "phone://"; private boolean deviceIsPhone = false; @Override public void reload() { this.initialize(new LoadPhonePojos(this)); PackageManager pm = this.getPackageManager(); deviceIsPhone = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY); } public ArrayList<Pojo> getResults(String query) { ArrayList<Pojo> pojos = new ArrayList<>(); // Append an item only if query looks like a phone number and device has phone capabilities if (deviceIsPhone && query.matches("^([0-9+ .-]{2,}|[*#]{1,3}[0-9]{1,3}[*a-zA-Z0-9]*#)$")) { pojos.add(getResult(query)); } return pojos; } public Pojo findById(String id) { return getResult(id.replaceFirst(Pattern.quote(PHONE_SCHEME), "")); } private Pojo getResult(String phoneNumber) { PhonePojo pojo = new PhonePojo(); pojo.id = PHONE_SCHEME + phoneNumber; pojo.phone = phoneNumber; pojo.relevance = 20; pojo.name = phoneNumber; return pojo; } }