[Java for Android App Development] mynote:
if you are using eclipse as die you may use the "Manifest" Editor which can easy generate your manifest and your permissions.

If you are using Android Studio with latest SDK then there is an Auto completing.

If you want to add permissions be carefulll. some devices will not be able to download your app.

Use use-feature and disable required if you still want the app listed in playstore for devices which has (for example) no Bluetooth or camera

Here is an example of one of my apps.

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="de.seiboldsoft.myapp

android:versionCode="10"

android:versionName="1">

<uses-sdk

android:minSdkVersion="11"

android:targetSdkVersion="17" />

<permission

android:name="de.seiboldsoft.myapp.permission.C2D_MESSAGE"

android:protectionLevel="signature" />

<uses-feature

android:name="android.hardware.camera.autofocus"

android:required="false" />

<uses-feature

android:name="android.hardware.camera.flash"

android:required="false" />

<uses-feature android:name="android.hardware.location" />

<uses-feature

android:name="android.hardware.location.gps"

android:required="false" />

<uses-feature

android:name="android.hardware.microphone"

android:required="false" />

<uses-feature

android:name="android.hardware.camera"

android:required="false" />

<uses-feature

android:name="android.hardware.telephony"

android:required="false" />

<uses-feature

android:name="android.hardware.bluetooth"

android:required="false" />

<uses-feature

android:name="android.hardware.touchscreen"

android:required="false" />

<uses-feature

android:name="android.hardware.wifi"

android:required="false" />

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<uses-permission android:name="android.permission.ACTION_BOOT_COMPLETED" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

<uses-permission android:name="android.permission.WAKE_LOCK" />

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

<uses-permission android:name="android.permission.SEND_SMS" />

<uses-permission android:name="android.permission.RECEIVE_SMS" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission android:name="android.permission.READ_SMS" />

<uses-permission android:name="android.permission.WRITE_SMS" />

<uses-permission android:name="android.permission.SEND_SMS" />

<uses-permission android:name="android.permission.CAMERA" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

<uses-permission android:name="android.permission.BATTERY_STATS" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

<uses-permission android:name="android.permission.VIBRATE" />

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="de.seiboldsoft.theftspy.permission.C2D_MESSAGE" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-permission android:name="android.permission.READ_CALL_LOG" />

<uses-permission android:name="android.permission.READ_CONTACTS" />

<uses-permission android:name="android.permission.WRITE_CONTACTS" />

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

<uses-permission android:name="android.permission.DELETE_PACKAGES" />

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<uses-permission android:name="com.android.vending.BILLING" />

<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.BLUETOOTH" />

<uses-permission android:name="com.android.vending.BILLING" />

<uses-permission android:name="android.permission.USE_CREDENTIALS" />

<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />

<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/myapp"

android:largeHeap="true"

android:logo="@drawable/ic_launcher"

android:launchMode="singleTop"

android:theme="@android:style/Theme.Black">

<receiver

android:name="com.google.android.gcm.GCMBroadcastReceiver"

android:permission="com.google.android.c2dm.permission.SEND">

<intent-filter>

<action android:name="com.google.android.c2dm.intent.RECEIVE" />

<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

<category android:name="de.seiboldsoft.myapp" />

</intent-filter>

</receiver>

<activity

android:name=".activities.StartAcitvity"

android:configChanges="orientation|keyboardHidden|screenSize"

android:label="@string/myapp"

android:launchMode="singleInstance"

android:theme="@style/Theme.Transparent">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<service android:name="GCMIntentService" />

<activity android:name=".modules.AlarmActivity"></activity>

<service

android:name="AndroidService"

android:exported="false"

android:label="@string/myapp" />

<service android:name=".modules.ModulCamera" />

<!-- cropped lots of stuff -->

</application>

</manifest>