When you use libraries, B4A simply looks <permission> tags in XML-file.
If author of library forgot to add permissions, you will not see them in the list of permissions.
I wrote small 'library' as example and compiled it in SLC.
package b4a.SM.Test;
import anywheresoftware.b4a.BA;
import anywheresoftware.b4a.BA.Permissions;
@BA.Version (1.00f)
@BA.ShortName ("smTest")
@Permissions(values={"android.permission.SEND_SMS"})
@BA.ActivityObject
public class smTest
{
public static void Initialize (BA ba, String eventName)
{
}
}
If to include my library into B4A project, IDE will show that app requires android.permission.SEND_SMS permission.
Meanwhile permissions are not necessary at all.
About read_contacts / write_contacts and similar.
Many persons think that it's enough to include one permission from group and other permissions from this group will work also. It's true for some Android API releases. But documentation talks.
Your app still needs to explicitly request every permission it needs, even if the user has already granted another permission in the same group. In addition, the grouping of permissions into groups may change in future Android releases. Your code shouldn't have logic that depends on a set of particular permissions being in the same group.