尝试通过单独的应用程序启动一个应用程序的活动

时间:2014-10-07 02:53:19

标签: android eclipse

我在Android设备上有两个应用程序:

我的应用程序,名为“app1”,以及一个名为“app2”的独立应用程序,没有使用权限元素集。

我只是试图通过app1调用app2的活动。

当我尝试使用adb时,活动会正常启动,如下所示:

am start -n com.test.app2/.Special

有没有办法在Eclipse中编写应用程序来执行类似的操作?

我已经尝试编写app1来调用我自己的.class文件,该文件以相同的细节启动一个intent,如:

Intent app1intent = new intent(); 
app1intent.setComponent(new ComponentName("com.test.app2","com.test.app2.Special"));
startActivity(app1intent);  

但是当我尝试时,我看到的只是app1启动的白色屏幕。

相反,我想我会直接通过清单文件调用app2的.class文件。

这是app1的AndroidManifest.xml。

我怀疑我错过了一些额外的文件作为我的软件包的一部分,因为这个清单只是基于Eclipse附带的一个示例应用程序,但可以使用一些帮助。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.app1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.test.app2.Special"
            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>

</manifest>

2 个答案:

答案 0 :(得分:0)

请改为尝试:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("com.test.app2", "com.test.app2.Special"));
startActivity(intent);

答案 1 :(得分:0)

我的应用程序中有以下工作:

Activity中的app1代码:

Intent launchIntent = new Intent("com.app2.SOMETHING");
startActivity(launchIntent);

app2的AndroidManifest.xml,在您要发布的Activity内:

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

加成:

检查设备上是否安装了app2:

 boolean isAppTwoInstalled = false;
 PackageManager packageManager = getPackageManager();

 try {
     PackageInfo packageInfo = packageManager.getPackageInfo("com.app2", PackageManager.GET_ACTIVITIES);
     isAppTwoInstalled = true;
 } catch (Exception e) {
     // not installed
 }