我有应用程序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,我怎么可以编写代码来启动应用程序中的一个活动? 谢谢!
如果你们正面临着“拒绝权限:启动意图......”错误,或者如果应用程序是启动应用程序过程中不被碰撞没有任何理由 - 然后使用这个清单一行代码
android:exported="true"
请与面漆小心(); 如果你错过了它的应用渐冻。 如果提及的应用程序将是一个平稳启动。
finish();
另一种解决方案仅适用于两种活动是在同一个应用程序。 在我的情况下,应用B不知道类com.example.MyExampleActivity.class
中的代码,所以编译将会失败。
我在网上搜索,并发现了一些类似这样的下方,它工作得很好。
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();
}
如果两个应用程序具有相同的签名(这意味着这两个应用都是你的,使用相同的密钥签名的),你可以打电话给你的其他应用程序的活动如下:
Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME);
startActivity(LaunchIntent);
希望能帮助到你。