2016-10-28 5 views
-1

アクティビティの開始値を変更するには、アプリ選択インターフェースを使用します。私が参照しているアプリ選択インターフェースは、同じタイプのインテントをキャッチする複数のアプリを持っているときにポップアップするもので、ユーザーはその選択を常に使用するだけでなく、1つを選択することもできます。アプリ選択インターフェースを使用してアクティビティを起動するさまざまな方法を選択してください

現在、問題のアクティビティでは、2つの選択肢の選択用のボタンが表示され、それに基づいてインテントが作成され、インテントが発生して終了します。それでおしまい。カスタム作成ボタンの代わりに、インターフェイスの大半がユーザーの選択した言語を保持するので、上記のインターフェイスを使用して選択肢を表示したいと思います。理想的には、これはActivityクラスの値を設定するために使用されます。 2つの選択肢には異なる名前が必要です(この場合は/ xtermという用語)。

これを行う方法はありますか?

final Intent intent = getLaunchIntent(); 

    //Would like to replace this Alert Dialog with the app selection interface 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage(R.string.launch_preference); 
    builder.setPositiveButton(R.string.term_preference, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      intent.putExtra("launchType", "launchTerm"); 
      dialog.dismiss(); 
      startActivity(intent); 
      finish(); 
     } 
    }); 
    builder.setNegativeButton(R.string.xterm_preference, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      intent.putExtra("launchType", "launchXTerm"); 
      dialog.dismiss(); 
      startActivity(intent); 
      finish(); 
     } 
    }); 
    builder.create().show(); 
    builder.create().dismiss(); 
+1

いくつかのコードを表示できますか? – AADProgramming

+0

確かに、確かに。しかし、どのコードも本当に問題に関連していません。私は何かが可能かどうか、それをどうやって行うのかを尋ねています。 – FutureShocked

答えて

0

私は次のようにして、このことに成功しました:私の主な活動を作成する意図が起動さから来る場合

を、私はアプリで他の二つの活動によってキャッチされたカスタムの意図を送ります。これにより、2つの間の選択が可能になる。表示されるテキストは、intent-filterandroid:label要素を入れることで設定できます。

これらのアクティビティのそれぞれは、余分に決定する起動タイプを持つ主なアクティビティにインテントを送信し、実行は通常通り続行できます。

<activity android:name=".Activity1" > 
     <intent-filter android:label="text to be displayed in selection" > 
      <action android:name="SELECTION_INTENT" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".Activity2" > 
     <intent-filter android:label="text to be displayed in selection" > 
      <action android:name="SELECTION_INTENT" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

    <activity android:name="MainActivity" > 
     <intent-filter> 
      <action android:name="CHOICE_INTENT" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
1

警告:あなたがrefereing部分の回答(下を見てください)

アプリ選択インターフェイスは、意思に反応するにはいくつかの方法がある場合に表示されます。 あなたのアプリケーションでは、同じ意図に対して2つの異なる定義を宣言する必要があります。

アイデアは、これが

のAndroidManifest.xml

<activity android:name=".ReactActivity1" > 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:scheme="(insert a scheme here)" /> 
      (...) 
     </intent-filter> 
</activity> 
<activity android:name=".ReactActivity2" > 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:scheme="(insert a scheme here)" /> 
      (...) 
     </intent-filter> 
</activity> 
異なるパラメータを使用して第三の活動を開始します、(のは "ReactActivity1" と "ReactActivity2を" それらを呼びましょう)のための2つの活動を作成することです

ReactActivity1

(...) 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
Intent intent = getLaunchIntent(); 
    intent.putExtra("launchType", "launchTerm"); 
    startActivity(intent); 
    finish(); // Running finish() inside onCreate() method will make this activity 
       // "invisible" (it will never be shown to the user, and will 
       // immediatly be replaced by the next one...) 
} 

ReactActivity2

(...) 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
Intent intent = getLaunchIntent(); 
    intent.putExtra("launchType", "launchXTerm"); 
    startActivity(intent); 
    finish(); 
} 

問題:問題は、私は(「期間」/「xtermは」のように、別の名前で)両方の選択が違って見えることが可能であるかわからないということです。私は、両方の場合にAndroidシステムがアプリケーションの名前を表示すると思います。

+0

残念ながら、2つのオプションの名前を変更する方法が必然的に必要になります。おかげさまで、これはまだ有用な情報です。 – FutureShocked

+0

多分それを行う方法があります。私はちょうどそれを知らないし、ドキュメントの1つを探していない。たぶんいくつかの追加の検索/試し作業が​​必要です。 –

関連する問題