我在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>
答案 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
}