如何在另一个应用程序启动的活动?如何在另一个应用程序启动的活动?(How to start acti

2019-05-09 01:38发布

我有应用程序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,我怎么可以编写代码来启动应用程序中的一个活动? 谢谢!

Answer 1:

如果你们正面临着“拒绝权限:启动意图......”错误,或者如果应用程序是启动应用程序过程中不被碰撞没有任何理由 - 然后使用这个清单一行代码

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();
}


Answer 2:

如果两个应用程序具有相同的签名(这意味着这两个应用都是你的,使用相同的密钥签名的),你可以打电话给你的其他应用程序的活动如下:

Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage(CALC_PACKAGE_NAME);
startActivity(LaunchIntent);

希望能帮助到你。



文章来源: How to start activity in another application?