2017-07-21 47 views
0

我正在寫一個應用程序,將服務於電視和智能手機。現在我只想根據設備區分主屏幕。 我已放置碎片,因此根據設備進行不同的排列。 但是,當我發動對TV的應用程序,它不是tvActivity時啓動,但在MainActivityAndroidTv和智能手機在一個應用程序/不同的發射器

另外,我在清單2發射器,一個

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

和其他

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

這裏是我的代碼:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.jamesp.fragmenttest"> 

    <uses-feature android:name="android.software.leanback" 
     android:required="false" /> 


    <!--Unsupported TV hardware features--> 
    <uses-feature android:name="android.hardware.touchscreen" 
     android:required="false"/> 
    <uses-feature android:name="android.hardware.faketouch" 
     android:required="false"/> 
    <uses-feature android:name="android.hardware.telephony" 
     android:required="false"/> 
    <uses-feature android:name="android.hardware.camera" 
     android:required="false"/> 
    <uses-feature android:name="android.hardware.nfc" 
     android:required="false"/> 
    <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.sensor" 
     android:required="false"/> 



    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" 
     android:banner="@mipmap/ic_launcher"> 



     <activity android:name=".MainActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 


     <activity android:name=".TvActivity" 
      android:label="@string/app_name" 
      android:theme="@style/Theme.Leanback"> 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 
      </intent-filter> 
     </activity> 


    </application> 

</manifest> 

TvActivity:

public class TvActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_tv); 

    } 
} 

MainActivity:

public class MainActivity extends AppCompatActivity { 
    public static final String TAG = "TAG"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE); 
     if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { 
      Log.d(TAG, "Running on a TV Device"); 
      setContentView(R.layout.activity_tv); 
     } else { 
      setContentView(R.layout.activity_main); 
      Log.d(TAG, "Running on a non-TV Device"); 
     } 
    } 
} 

有了這個測試,我可以分化,因此選擇合適的佈局,但我不明白爲什麼電視發射MainActivity。

謝謝

+0

可能是你需要創建一個支持電視的屏幕尺寸佈局毒害的耐受文件夾嘗試此鏈接https://developer.android.com/guide/閱讀文檔practice/screens_support.html –

+0

感謝您的鏈接!其實我只是注意到了一些事情,如果我顛倒清單中活動的順序,它是第一個計數的人。如果我在MainActivity之前放置TvActivity,兩臺設備(電視和智能手機)都將啓動TvAcitivty。 那麼如何改變?是否有可能有多個「launchActivity」? – Jamesp

+0

我從來不嘗試使用兩個啓動器活動來製作應用程序,當我需要在不同屏幕上的不同佈局時,我會執行Google推薦的內容,但您可以嘗試在Google中進行搜索。 –

回答

0

將此作爲您的清單。它會工作。

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

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

<uses-feature 
    android:name="android.hardware.touchscreen" 
    android:required="false" /> 
<uses-feature 
    android:name="android.software.leanback" 
    android:required="true" /> 


<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/Theme.Leanback"> 
    <activity 
     android:name=".MainActivity" 
     android:banner="@drawable/app_icon_your_company" 
     android:icon="@drawable/app_icon_your_company" 
     android:label="@string/app_name" 
     android:logo="@drawable/app_icon_your_company" 
     android:screenOrientation="landscape"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".DetailsActivity" /> 
    <activity android:name=".PlaybackOverlayActivity" /> 
    <activity android:name=".BrowseErrorActivity" /> 
</application> 

相關問題