7

我有这个清单:

<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

4

4 回答 4

9

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. 与应用程序清单文件无关

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);
于 2013-01-20T11:00:18.733 回答
4

创建两个不同的应用程序(包)之后。转到您的第一个应用程序的清单文件并按如下方式对其进行编辑:-

<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:运行第一个应用程序!

于 2015-08-12T10:37:16.643 回答
2

我解决了 Intent 和 setClass 的问题

Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setClassName("packagewheretheactivityyouwantcallis", "packagewheretheactivityyouwantcallis.ActivityYouWantCall");
            startActivity(intent);

不要忘记将您正在编写的活动的清单放入您要调用的活动,如下所示:

<application 
....>
 <activity
        android:name="packagewheretheactivityyouwantcallis.ActivityYouWantCall">
    </activity> 
</application>
于 2015-11-25T11:59:15.980 回答
0

您可以使用以下代码:

Intent myIntent= new Intent(FirstActivity.this,SecondActivity.class); 
startActivity(myIntent);

如果一个类在同一个包中或在另一个包中,这并没有什么不同。只要确保你导入了这个类。

我在清单中使用了这段代码:

<activity
    android:name="com.mycompany.mainapplication.package1.SecondActivity"
    android:label="Simple Math Questions" >
</activity>
于 2013-01-20T10:58:17.090 回答