以下のように定義されたアプリケーションAがあります。
<application Android:icon="@drawable/icon" Android:label="@string/app_name">
<activity Android:name="com.example.MyExampleActivity"
Android:label="@string/app_name">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
ここで、アプリケーションBで、アプリケーションAでアクティビティを開始するコードを作成するにはどうすればよいですか?ありがとう!
「Permission Denial:starting Intent ...」エラーに直面している場合、またはアプリの起動中に理由なくアプリがクラッシュする場合-マニフェストでこの単一行コードを使用します
Android:exported="true"
Finish()に注意してください。 、それを逃した場合、アプリがフリーズします。言及されている場合、アプリはスムーズなランチャーになります。
finish();
もう1つのソリューションは、同じアプリケーション内の2つのアクティビティに対してのみ機能します。私の場合、アプリケーションBはコードのクラスcom.example.MyExampleActivity.class
を知らないため、コンパイルは失敗します。
Webで検索したところ、以下のようなものが見つかりましたが、うまくいきます。
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);
SetClassNameメソッドを使用することもできます。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.hotfoot.rapid.adani.wheeler.Android", "com.hotfoot.rapid.adani.wheeler.Android.view.activities.MainActivity");
startActivity(intent);
finish();
あるアプリから別のアプリに値を渡すこともできます。
Intent launchIntent = getApplicationContext().getPackageManager().getLaunchIntentForPackage("com.hotfoot.rapid.adani.wheeler.Android.LoginActivity");
if (launchIntent != null) {
launchIntent.putExtra("AppID", "MY-CHILD-APP1");
launchIntent.putExtra("UserID", "MY-APP");
launchIntent.putExtra("Password", "MY-PASSWORD");
startActivity(launchIntent);
finish();
} else {
Toast.makeText(getApplicationContext(), " launch Intent not available", Toast.LENGTH_SHORT).show();
}
両方のアプリケーションに同じ署名がある場合(両方のAPPSがあなたのものであり、同じキーで署名されていることを意味します)、次のように他のアプリアクティビティを呼び出すことができます。
Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME);
startActivity(LaunchIntent);
それが役に立てば幸い。