You can check whether you application have been granted specific permission by using following snippet. ( below I have given example )
if (context
.checkCallingOrSelfPermission(permission.ACCESS_COARSE_LOCATION) ==
PackageManager.PERMISSION_GRANTED
||
context
.checkCallingOrSelfPermission(permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED
) {
// we have been granted above permission.Lets do the task
}
Also for system features you can specify following in manifest.
<uses-feature android:name="android.hardware.telephony" android:required="false" />
PackageManager packageManager = this.getPackageManager();
if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY))
{
Log.d("TEST", "TELEPHONY IS AVAILABLE");
} else {
Log.d("TEST", "TELEPHONY IS NOT AVAILABLE");
}