0

私は混乱しています。

「com.exampleone.a」と「com.exampletwo.b」のように、異なるパッケージから 2 つのアクティビティがあります。彼らは同じプロジェクトの下にあります。

単一のマニフェスト xml では、効率上の理由から、「com.exampleone」をパッケージとして宣言することにしました。つまり、

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

そのため、私が使用する他のアクティビティのインテントフィルターについて...

<intent-filter>
    <action android:name="com.exampletwo.b" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

したがって、私のプログラムでは、com.exampletwo.b に移動したいときに、次を使用します...

Intent myIntent = new Intent("com.exampletwo.b");
startActivity(myIntent);

たまたま (ええ、人生)、私は最終的に、アクティビティ「com.exampletwo.b」をランチャーとして使用する必要があると判断しました。そこで、ランチャーに変えてみたのですが…

<intent-filter>
    <action android:name="com.exampletwo.b" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

...これは機能しません (「ランチャー アクティビティが見つかりません」というエラーが表示されます)。そして、アクションの名前を次のように変更することはできません...

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

...なぜなら、このアクティビティを参照するのに苦労するからです (プロジェクト全体を通して、目的のために "com.exampletwo.b" を使用していることに注意してください)。

できれば名前を変更することなく、ランチャーを機能させる方法はありますか?

ダミーのランチャー アクティビティを作成することでこれが機能する可能性があると考えましたが、これを解決する簡単な方法はありますか?

4

1 に答える 1

0

他のアクティビティを選択して開始することができます。LauncherActivity、FromOnePackageAct、FromTwoPackageAct のようなもの。次に、LauncherActivity でその他にジャンプできます。

public class LauncherActivity...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = new Intent(this, FromOnePackageAct.class);//here´s the trick
    from.startActivity(intent);
//  from.finish(); this is optional

これがあなたにアイデアを提供できることを願っています:-)

于 2013-05-02T20:54:25.733 に答える