2017-07-21 54 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> 

相关问题