2017-06-01 11 views
0

Androidアプリの主要なアクティビティは、デフォルトの名前と、ユーザーが選択した場合にアプリケーションに付けるエイリアス名です。私はAndroidManifest.xmlで次のように定義しました。デフォルトの名前とそのエイリアスを持つAndroid apkをインストールする

 <activity 
     android:name="com.example.fgd.myapplication4.MainActivity4" 
     android:label="mydefaultlabel" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity-alias 
     android:label="myaliaslabel" 
     android:name=".MainActivity-Flavor-One" 
     android:enabled="true" 
     android:targetActivity=".MainActivity4" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity-alias> 
</application> 

しかし、私はAPKを構築し、それを自分の携帯電話をインストールしようとしましたし、それがあるアプリとそれにアクセスするための「myaliaslabel」と別のものにアクセスするための名前「mydefaultlabel」、とアイコンのいずれかをインストールします私の望む動作ではなく、始めに "mydefaultlabel"というアイコンをインストールするだけです。

この動作を達成するにはどうすればよいですか?

PD:私はこのコードでアプリのエイリアスを変更すると、削除や しようとすると、もはやアプリケーションを実行することはできないために発生します

getPackageManager().setComponentEnabledSetting(
          new ComponentName("com.example.alber.myapplication4", "com.example.alber.myapplication4.MainActivity-Flavor-One"), 
          PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

getPackageManager().setComponentEnabledSetting(
          new ComponentName("com.example.alber.myapplication4", "com.example.alber.myapplication4.MainActivity4"), 
          PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

私はエラーを取得するアプリその私のAndroidデバイスにはインストールされていません。

アプリケーションエイリアスをこのように変更できるように、エイリアスはランチャーカテゴリで定義する必要があります。

このような場合を除いて、エイリアスを変更する方法はありません。

他にもできることはありますか?

答えて

1

は、次の2つの主な活動LAUNCHER

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

を設定しているあなたは、あなたのアイコンまたは何を実装して、あなたの特定の活動にこれらの行を追加する必要があります。

+0

あなたの答えをありがとうが、それは動作しません、私は関連する問題を表示するために自分の投稿を編集しています。 – user2638180

0

実際、私の考えよりも実際には簡単でした。

アクティビティエイリアスでは、アンドロイド:enabled = "true"をandroid:enabled = "false"に変更するだけで、エイリアスは引き続き機能しますが、ランチャーとして初めて表示されることはありません。

関連する問題