So I was just looking at are very standard app, - Bank of America and Ally Bank. none of these apps showed up on Google Play Store and in my list of devices they indicated as being incompatible . So I downloaded the other app forgot its name which will make my phone model brand and carrier different from what it is now and hopefully that app would show up. But even after disguising my phone as a Nexus with A T and T it would still not show up on play store . So obviously the developer had set some restrictions based on carriers or brand. What I want to find out here, in this question is how do I find out what kind of restrictions this app may have , so I can accordingly spoof the phone I ended up installing it from a manual apk download , and that is not trustworthy with bank password
Filtering in Google Play is based on several types of app metadata and configuration settings, including manifest declarations, required libraries,architecture dependencies, and distribution controls set in the Google Play Developer Console, such as geographic targeting, pricing, and more.
Google Play filtering is based in part on manifest declarations and other aspects of the Android framework, but actual filtering behaviors are distinct from the framework and are not bound to specific API levels.
However when you access Google playstore from the web browser with an email id which has not registered with any android device the restrictions are not applied. If you want look at the specific app for restrictions you can download the apk file offline and unpack it and in the manifest file(AndroidManifest.xml) you can see the list restrictions made for that app. Look out for the Filtering based on the App Manifest tags in particular under the configuration.
Consider the following example, an application that is designed to run on older API levels declares a Bluetooth permission, but does not declare the Bluetooth feature in a element.
Result: Google Play does not filter the application from any device.
<manifest ...> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-sdk android:minSdkVersion="3" /> ... </manifest>
In the second example, below, the same application also declares a target API level of "5".
Result: Google Play now assumes that the feature is required and will filter the application from all devices that do not report Bluetooth support, including devices running older versions of the platform.
<manifest ...> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" /> ... </manifest>
There might be some explicit restrictions (such as availability in certain countries only, and/or a subset of Android versions), and indirect ones. A developer hardly can test an app on all devices that exist, so they usually setup parameters: Android version, device features.
An app might e.g. require a minimum screen resolution – which would rule out all devices "below" that, without any device/manufacturer being explicitly mentioned. It might require a camera being present, or the device having a GPS module (not all tablets have this).
Would be quite a long post to list all possibilities and combinations, but I guess you've got the idea. As for the banking app of a given bank, I very well could imagine it being restricted to a single country (or a small group of countries) – where the bank is working with customers.