Gee*_*eek 7 android android-activity android-launcher
当我启动应用时,Android正在启动错误的活动.
Manifest.xml:
<activity
android:name="com.company.app.activities.RS_SplashScreenActivity"
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.company.app.activities.RS_PreviousLauncherActivity"
android:label="@string/app_name"
android:theme="@style/myTheme" >
</activity>
Run Code Online (Sandbox Code Playgroud)
我添加了一个新的Activity RS_SplashScreenActivity并将其设置为启动器活动.它还试图RS_PreviousLauncherActivity在添加之前启动曾经是一个启动器活动RS_SplashScreenActivity.
我确信android会从控制台的以下日志中选择错误的启动器活动.
安慰 :
[2013-10-10 12:03:58 - app] Android Launch!
[2013-10-10 12:03:58 - app] adb is running normally.
[2013-10-10 12:03:58 - app] Performing com.company.app.activities.RS_PreviousLauncherActivity activity launch
[2013-10-10 12:04:01 - app] Uploading app.apk onto device '5C78E6332221CD6A1'
[2013-10-10 12:04:05 - app] Installing app.apk...
[2013-10-10 12:04:12 - app] Success!
[2013-10-10 12:04:12 - app] Starting activity com.company.app.activities.RS_PreviousLauncherActivity on device 5C78E6332221CD6A1
[2013-10-10 12:04:12 - app] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.company.app/.activities.RS_PreviousLauncherActivity }
[2013-10-10 12:04:13 - app] ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.company.app/.activities.RS_PreviousLauncherActivity } from null (pid=4530, uid=2000) not exported from uid 10084
[2013-10-10 12:04:13 - app] ActivityManager: at android.os.Parcel.readException(Parcel.java:1425)
[2013-10-10 12:04:13 - app] ActivityManager: at android.os.Parcel.readException(Parcel.java:1379)
[2013-10-10 12:04:13 - app] ActivityManager: at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1783)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.commands.am.Am.runStart(Am.java:463)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.commands.am.Am.run(Am.java:108)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.commands.am.Am.main(Am.java:81)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
[2013-10-10 12:04:13 - app] ActivityManager: at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
[2013-10-10 12:04:13 - app] ActivityManager: at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?
编辑:
public class RS_SplashScreenActivity extends Activity {
// Splash screen timer
private static int SPLASH_TIME_OUT = 3000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(RS_SplashScreenActivity.this, RS_PreviousLauncherActivity.class);
RS_SplashScreenActivity.this.startActivity(i);
// close this activity
RS_SplashScreenActivity.this.finish();
}
}, SPLASH_TIME_OUT);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
当我删除活动标记时RS_PreviousLauncherActivity,它会将正确的活动检测为启动器,但是当我再次添加活动标记时,它会开始选择错误的活动.
编辑: 我在控制台下面的日志.可能这与我的问题有关.
[2013-10-09 10:27:04 - app] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.apache.james.mime4j.message.Header$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
Run Code Online (Sandbox Code Playgroud)
还有一件事,同样的项目适用于其他机器.
Joe*_*Joe 22
右键单击您的项目,然后选择" 运行方式 ">" 运行配置... ".检查弹出的对话框是否在Android选项卡中选择了" 启动默认活动 " :

很可能在继续启动旧活动的机器上,它被设置为意外启动该特定活动(第二个单选按钮).
| 归档时间: |
|
| 查看次数: |
6649 次 |
| 最近记录: |