我有这个清单:
<manifest ...
package="com.my">
<application ...>
<activity ...
android:name=".app.Run">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity ...
android:name=".app.Preferences"/>
<activity ...
android:name=".library.error.ErrorDialog"/>
</application>
</manifest>
如何从ErrorDialog
活动开始Run
活动?
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.my.library.error", "com.my.library.error.ErrorDialog"));
startActivity(intent);
或
Intent intent = new Intent();
intent.setComponent(new ComponentName("library.error", "library.error.ErrorDialog"));
startActivity(intent);
不工作
MEA CULPA ...... MEA CULPA ......
我的ErrorDialog
活动未公开。 :d
答案 0 :(得分:8)
<强> 1。与应用程序清单文件相关
Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.run"/>
<activity android:name="app.run"/>
<activity android:name="library.error.ErrorDialog"/>
package app.run // Your Main Application Package Name
Activity:
Intent i = new Intent();
i.setClassName("app.run", "library.error.ErrorDialog"); //
startActivity(i);
<强> 2。与Application Manifest File无关
Intent intent = new Intent();
intent.setComponent(new ComponentName("packagename whos activity u want to launch","classname.java"));
startActivity(intent);
在您的案例中
Intent intent=new Intent();
intent.setComponent(new ComponentName("library.error", "library.error.ErrorDialog"));
startActivity(intent);
答案 1 :(得分:3)
创建两个不同的应用程序(包)之后。转到第一个应用程序的清单文件,然后按如下所示进行编辑: -
<activity
android:name="com.example.applicationfire.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.application2.Second"
android:label="@string/app_name" >
</activity>
这里只是声明要从第一个应用程序打开的第二个应用程序中的活动。 请注意,这里“com.example.application2”是另一个应用程序的包名称,“Second”是第二个包中活动的名称。
你要为另一个应用程序中的另一个活动启动的意图是这样的 -
btnStart.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
Intent intent = new Intent("android.intent.action.MAIN");
intent.setComponent(new ComponentName("com.example.application2","com.example.application2.Second"));
startActivity(intent);
} });}
现在,这里传递给意图的第一个争论将是你的第二个应用程序的包名称,第二个争论将是要打开的活动的名称。 而已。 PS:运行第一个应用程序!
答案 2 :(得分:0)
我用Intent和setClass
解决了这个问题Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("packagewheretheactivityyouwantcallis", "packagewheretheactivityyouwantcallis.ActivityYouWantCall");
startActivity(intent);
不要忘记将您要编写的活动的活动列入您的活动清单:
<application
....>
<activity
android:name="packagewheretheactivityyouwantcallis.ActivityYouWantCall">
</activity>
</application>
答案 3 :(得分:-1)
您可以使用此代码:
Intent myIntent= new Intent(FirstActivity.this,SecondActivity.class);
startActivity(myIntent);
如果一个类在另一个包的同一个包中,它不会产生任何不同。请确保导入Class。
我在清单中使用了这段代码:
<activity
android:name="com.mycompany.mainapplication.package1.SecondActivity"
android:label="Simple Math Questions" >
</activity>