从另一个包启动活动

use*_*006 6 android packages android-intent android-activity

我有这个清单:

<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>
Run Code Online (Sandbox Code Playgroud)

如何ErrorDialogRun活动开始活动?

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.my.library.error", "com.my.library.error.ErrorDialog"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

要么

Intent intent = new Intent();
intent.setComponent(new ComponentName("library.error", "library.error.ErrorDialog"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

不工作


MEA CULPA ...... MEA CULPA ......

我的ErrorDialog活动不公开.:d

Vik*_*tel 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); 
Run Code Online (Sandbox Code Playgroud)

setClassName()


2.与Application Manifest File无关

Intent intent = new Intent();
intent.setComponent(new ComponentName("packagename whos activity u want to launch","classname.java"));   
startActivity(intent); 
Run Code Online (Sandbox Code Playgroud)

setComponentName()

在你的情况下

Intent intent=new Intent();
intent.setComponent(new ComponentName("library.error", "library.error.ErrorDialog")); 
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)


ObA*_*bAt 0

你可以只使用这段代码:

Intent myIntent= new Intent(FirstActivity.this,SecondActivity.class); 
startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)

如果一个类位于同一个包中和另一个包中,则没有任何区别。只要确保导入该类即可。

我在清单中使用了以下代码:

<activity
    android:name="com.mycompany.mainapplication.package1.SecondActivity"
    android:label="Simple Math Questions" >
</activity>
Run Code Online (Sandbox Code Playgroud)