ライブラリを作成しました。さまざまなプロジェクトに添付されます。ライブラリ クラス内の現在のアプリケーションのメイン アクティビティを参照する必要があります (このアプリケーションはライブラリをホストしています)。getPackageManager()
?の結果にサイクルを発生させずに行うことができます。
4 に答える
Android には「メイン アクティビティ クラス」という概念はありません。intent-filter
AndroidManifest ファイルで参照され、ランチャーで使用されるActivity を意味する可能性が最も高いでしょう。それはそのようなものの1つになることができます。それはありえません。1 つのアプリで多くの場合があります。PackageManager
それらを取得するために使用します
編集
アプリケーションを起動したときにアクティビティが最初に表示されることを「android os」が認識する方法
マニフェスト ファイルに設定します。以下の活動:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
あなたのエントリーポイントになることができます。通常はアプリごとに 1 つだけですが、好きなだけ持つことができます。
- ライブラリ (つまり com.example) は、Eclipse では「isLibrary」、Android Studio では「is Library Module」である必要があります。
- 「上位プロジェクト」からライブラリ内の任意のコンポーネントを呼び出すには、「com.example.component」を直接呼び出すことができます。つまり
、インテント i = 新しいインテント(this, com.example.component.class); - @ lifeson106 が Eclipse で書いたものと同じです。Android Studio では、別のチュートリアルが必要です。
本当に「ライブラリ」がプロジェクトのコンポーネント (ライブラリを使用しているかどうかに関係なく) を呼び出したい場合は、コンポーネントに「インテント フィルター」を定義する必要があります。アクティビティの一般的な方法は次のとおりです。
<activity
android:name="com.gmail.app.activities.SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.gmail.app.SplashActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
あなたのコード(ライブラリ)では、次のようにすることができます:
Intent i = new Intent("com.gmail.app.SplashActivity");
startActivity(i);
ライブラリ プロジェクトがライブラリとして設定されていることを確認する必要があります。
[プロジェクト プロパティ] -> [Android] に移動し、[Is Library] がチェックされていることを確認します。
ここで、他のプロジェクトでライブラリ プロジェクトを参照する必要があります。
[プロジェクト プロパティ] -> [Java ビルド パス] -> [プロジェクト] に移動します。[追加] をクリックしてライブラリを選択します。
特にライブラリ プロジェクトに変更を加えた後は、プロジェクトをクリーンアップする必要がある場合があります。