As we know, Google Play filters android applications that are visible to user by comparing features that required by the application with the features available on the device. Android requires specific tags to be declared on manifest file when using a specific feature. Commonly use tags are <uses-permission> and <uses-feature>. But improperly use of these tags could make our application only visible to a small range of devices though it was intended to reach out a large range of devices.
For example, if we use phone call feature in our application , it requires <uses-permission android:name=”android.permission.CALL_PHONE”/> to be explicitly declared in manifest file. By using this <uses-permission> tag, Google Play will only show our application to devices that have phone feature, it will not be visible to most of tablet devices that do not have phone feature. This problem happened on some of my applications. I was so confused why so many users complained that they could not find my applications on Google Play Store.
After comprehensive searching and reading on android sdk documentation, i found that properly use of <uses-feature> tag and <uses-permission> tag can easily solve the problem. The key is by declaring the <uses-feature> tag with android:required=”false” . So, from our case, to enable phone call feature:
<manifest ...> <uses-feature android:name="android.hardware.telephony" android:required="false" /> <uses-permission android:name="android.permission.CALL_PHONE" /> ... </manifest>
As we can see, we have to explicitly declare the phone feature by using <uses-feature android:name=”android.hardware.telephony” android:required=”false”>. android:required=”false” tells the Google Play to disable filtering based on phone feature support, for all devices.
Remember we have to check manually the avaiability of the feature before using it. Use PackageManager’s hasSystemFeature(String feature) to check the feature availability.
PackageManager packageManager = getPackageManager(); String phoneNumber = "124567"; if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { //call phone Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + phoneNumber)); startActivity(intent); }
[ad#ad-720×90]







Leave a Reply