StartServiceAt should do the trick. no permission request is required by the user. the os will schedule the service to run
as close to the time requested and taking into consideration battery conservation and whatever else the device might be doing
at the time. however, there are some serious matters to take into account relating to network connections. if the device is
sleeping or dozing, network connections are cut. when the service is supposed to start (and assuming the service involved
network activity), the os will try to open a network connection, but there is no guarantee a connection will be successfully
made.
2 weeks in advance is a little risky; android will do what it feels it needs to do to preserve the battery and the device's
wellbeing. but,in theory, you can StartServiceAt 2 weeks from now and forget about it. anything involving the word "exact"
will involve either permissions or other restrictions.