2013-02-24 116 views
5

我知道您可以限制Android應用程序的清單文件中的定位更改,但我想知道是否有一種方法可以根據設備類型/大小進行更改。防止某些設備上的Android定位更改

我想阻止它在中小型手機上,但允許在大型手機/平板電腦上使用。

實現該目標的最佳方法是什麼?任何幫助將非常感激。

回答

6

爲此,我認爲您需要將兩件事合二爲一。

  1. 首先,獲取設備屏幕尺寸
  2. ,然後根據結果,啓用或禁用方向。

對於第一部分:

int screenSize = getResources().getConfiguration().screenLayout & 
     Configuration.SCREENLAYOUT_SIZE_MASK; 

switch(screenSize) { 
    case Configuration.SCREENLAYOUT_SIZE_LARGE: 
     Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show(); 
     break; 
    case Configuration.SCREENLAYOUT_SIZE_NORMAL: 
     Toast.makeText(this, "Normal screen",Toast.LENGTH_LONG).show(); 
     break; 
    case Configuration.SCREENLAYOUT_SIZE_SMALL: 
     Toast.makeText(this, "Small screen",Toast.LENGTH_LONG).show(); 
     break; 
    default: 
     Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show(); 
} 

信用:https://stackoverflow.com/a/11252278/450534溶液容易得到關於SO

最後,基於上述碼的結果,無論是其中:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
+1

+1對於「解決方案已在SO上很容易獲得」 – Pragnani 2013-02-24 14:27:37

+2

@Pragnani:應得的信用,它是由於呃。不能聲稱不是我的東西;-) – 2013-02-24 14:29:00

+0

我很欣賞這個解決方案很容易在SO中找到,但我不能通過問題標題找到它,因爲在那個階段我不知道以編程方式執行它是唯一的方法。我希望能有一些配置。不管怎麼說,還是要謝謝你。 – Zyga 2013-02-25 09:37:05

1

嗯,我可能是錯的,但據我所知,沒有直接的方法做到這一點。

您需要以編程方式檢查屏幕尺寸,並在此基礎上允許或禁止方向更改。

if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) 
{  
    // screen is large.. allow orientation changes 
} 

else 
{ 
     //restrict orientation 
} 
0

你可以在活動onCreate檢查您的設備尺寸過程中使用和調用方法setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);(您想針對大小或任何方向)。

請注意,如果活動不在請求的方向上,那麼這個活動將被銷燬並創建一個新活動。

0

檢查您的代碼的屏幕大小,並決定

setRequestedOrientation();

或不是

0

你需要覆蓋公共無效onConfigurationChanged(Configuration newConfig)並創建自己的邏輯檢查密度和屏幕尺寸。

但要小心..這不是好的做法。

相關問題