Are applications from "Unknown Sources" restricted by permissions?
Will Android tell me what permissions they require before installation?


In general, yes. In most (if not all) Android devices, there's a system app called "Package installer" which handles the installation/upgrade of an app. When you install an APK file from unknown source, this app will run and show all permissions the app requests, which looks like this:



Package installer on KitKat


  Will Android block functions that use permissions not noted in the manifest of non-Google Play apps?


During installation, Android doesn't check/test if a function requires specific permission to run. In other word, user can still install the app. However, the app will throw SecurityException (that may crash/behave unpredictably/do nothing, depends on how it's handled) when running the function that needs a permission, but is not declared in the manifest file. This applies to all apps, regardless from where it's installed.

Example: doing network operation without declaring &lt;uses-permission android:name="android.permission.INTERNET" /&gt; will crash the app with stack trace:

E/AndroidRuntime(18698): Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)


.