Question: I would like to do the following in my app:

* Portrait mode only for the phone
* Portrait mode and landscape mode for tablets.

I know i can easily change the orientation in the manifest file but that will affect the entire application. 

I have also thought of creating separate activities, to handle the different versions but i don't know how to detect the type of device using the application.

Does anyone know how to tackle this?

Answer: 
In activity's onCreate method check whether app is running on phone or on tablet. If app is running on phone set activity screen orientation to portrait only.

Add these files to your res folder.

**res/values/vars.xml:**

```
<?xml version="1.0" encoding="utf-8"?><resources><bool name="is_tablet">false</bool></resources>

```

**res/values-sw600dp/vars.xml:**

```
<?xml version="1.0" encoding="utf-8"?><resources><bool name="is_tablet">true</bool></resources>

```

In onCreate method off all your activites add this code:

```
    if (!getResources().getBoolean(R.bool.is_tablet)) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

```
You have to identify the tablet with Android screen qualifiers: 
![Screen qualifiers](https://i.stack.imgur.com/mmoPw.png)

Then you put in the right layout folder the settings you want. For example you can add the attribute *orientation:portrait|landscape* only in the layout xml file for large screens, and *orientation:portrait* for all the others. See the folder structures here:

res/layout/my\_layout.xml // layout for normal screen size ("default")
res/layout-small/my\_layout.xml // layout for small screen size
res/layout-large/my\_layout.xml // layout for large screen size
res/layout-xlarge/my\_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my\_layout.xml // layout for extra large in landscape orientation

Take a look to the google guide: <http://developer.android.com/guide/practices/screens_support.html>