Comment faites-vous un apk être une application de lancement sur les tablettes, mais juste une application normale sur les téléphones? Comment configurer le fichier manifeste pour cela?Android APK faire un était manifesté application de lancement sur tablette, mais l'application normale sur le téléphone
Par NAL Je veux dire, il sera affiché comme l'une des options lorsque l'apk est exécuté sur les tablettes:
Si la même apk est exécuté sur les téléphones, il ne montrera pas « Sélectionner une maison app "sélecteur.
En termes simples, cela est le comportement du apk doit avoir:
Objectif:
- Lorsque je clique maison sur téléphones, je ne vois pas l'application comme un des choix du lanceur .
- Lorsque je clique chez moi sur tablette alors je devrais voir l'app comme l'un des choix.
Mon approche est que j'ai un ChooserActivity.java qui détermine quel type de périphérique est en cours d'exécution. Si c'est une tablette, elle démarrera TabletMainActivity.java, si c'est un téléphone, elle démarrera PhoneMainActivity.java. (Le code pour savoir si elle est un comprimé ou un téléphone est correct.)
ChooserActivity.java
public class ChooserActivity extends AppCompatActivity {
ImageView tabIndicator;
private static final String TAG = "Chooser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chooser);
Log.d(TAG, "onCreate2() Chooser");
finish();
if (findViewById(R.id.tabIndicator)==null){
//PHONE
startActivity(new Intent(this, PhoneMainActivity.class));
}else{
//TABLET
startActivity(new Intent(this, TabletMainActivity.class));
}
}
}
res/layout/activity_chooser.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.sample.tabletchecker.Chooser">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="PHONE"
/>
</RelativeLayout>
res/layout- sw600dp/activity_chooser.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.sample.tabletchecker.Chooser">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="TABLET"
/>
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/tabIndicator"
/>
</RelativeLayout>
TabletMainActivity.java a les paramètres manifestes de lancement suivants:
<activity android:name=".TabletMainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!-- launcher setting -->
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
PhoneMainActivity.java est juste une activité normale, n'a rien sur le manifeste. C'est fait exprès parce que je veux que cette activité soit une activité normale sur les téléphones.
<activity android:name=".PhoneActivity">
</activity>
Mon ChooserActivity.java est la première activité qui se met en marche lorsque l'application se cliqué/ouvert, il choisit alors entre le 2. ChooserActivity entrée manifeste
<activity android:name=".ChooserActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
J'ai essayé différentes variantes pour la intention-filter pour le TabletMainActivity.java mais jamais capable d'obtenir le comportement correct. Je vois toujours le sélecteur du lanceur montré.
vous voulez dire, commencer Après la 'ChooserActivity' que vous appelez soit' 'TabletMainActivity' ou MobileMainActivity'? –
Oui, ** ChooserActivtity.java ** détermine l'activité à démarrer puis se termine. S'il s'agit d'une tablette, ChooserActivity ouvre TabletMainActivity si le téléphone démarre ** PhoneMainActivity **. – Hilfritz