Android会启动系统设置,而不是我的应用 - 代码日志

Android会启动系统设置,而不是我的应用

由于某些原因,每当我(尝试)启动我的应用程序,手机决定启动系统设置,而不是我的“主要活动”。是的,我指的是“Android系统设置”,而不是我的应用程序。

这只发生在我的手机上,我想这可能与我的应用程序刚刚打开系统设置的事实有关,当我决定从Eclipse重新启动一个新版本。

可以从Eclipse中启动应用程序,但是当我从应用程序导航回来时,它将返回到系统设置而不是主屏幕,就好像设置活动首先启动,然后是我的活动。如果我从手机启动应用程序,我再次获得系统设置。

该应用正在监听特定网址子字符串的VIEW操作,当我使用匹配的URL启动应用程序时,我得到的结果与我从Eclipse启动时相同,但应用程序启动,但是当我返回时,我返回设置。

我已经尝试谷歌搜索这个问题,所有我可以找到的是关于Android saving state的一个应用程序被杀死,但没有关于如何重置这个状态的任何信息。我已经尝试卸载该应用程序,杀死系统设置,重新启动手机,重新安装,清除应用程序数据..没有运气..

对于什么是值得的,这里是我的主要活动从清单的定义,

<activity android:name=".HomeActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:clearTaskOnLaunch="true" android:launchMode="singleTop">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
        <category android:name="android.intent.category.BROWSABLE"></category>
        <data android:pathPrefix="/isak-web-mobile/smart/" android:scheme="http" android:host="*"></data>
    </intent-filter>
 </activity>

这里是从尝试启动我的应用程序时的logcat行,没有任何设置在任何地方。

I/ActivityManager( 1301): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=se.opencare.isak/.HomeActivity }

当我从Eclipse发布时,我也会得到这一行(就像预期的那样),

I/ActivityManager( 1301): Start proc se.opencare.isak for activity se.opencare.isak/.HomeActivity: pid=23068 uid=10163 gids={3003, 1007, 1015}

如果重要的是手机是运行2.2.1的HTC Desire Z。

目前,这是我的HomeActivity,

public class HomeActivity extends Activity {
    public static final String TAG = "HomeActivity";

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(TAG, "onActivityResult(" + requestCode + ", " + resultCode + ", " + data + ")");
        super.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d(TAG, "onCreate(" + savedInstanceState + ")");
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onDestroy() {
        Log.d(TAG, "onDestroy()");
        super.onDestroy();
    }

    @Override
    protected void onPause() {
        Log.d(TAG, "onPause()");
        super.onPause();
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        Log.d(TAG, "onPostCreate(" + savedInstanceState + ")");
        super.onPostCreate(savedInstanceState);
    }

    @Override
    protected void onPostResume() {
        Log.d(TAG, "onPostResume()");
        super.onPostResume();
    }

    @Override
    protected void onRestart() {
        Log.d(TAG, "onRestart()");
        super.onRestart();
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        Log.d(TAG, "onRestoreInstanceState(" + savedInstanceState + ")");
        super.onRestoreInstanceState(savedInstanceState);
    }

    @Override
    protected void onResume() {
        Log.d(TAG, "onResume()");
        super.onResume();
    }

    @Override
    protected void onStart() {
        Log.d(TAG, "onStart()");
        super.onStart();
    }

    @Override
    protected void onStop() {
        Log.d(TAG, "onStop()");
        super.onStop();
    }

    @Override
    protected void onUserLeaveHint() {
        Log.d(TAG, "onUserLeaveHint()");
        super.onUserLeaveHint();
    }
}

上面的内容没有写入日志。

阅读Blundell的回覆后,我已经尝试更改launchMode / clearTaskOnLaunch设置,具有以下结果,

情况A – 我删除launchMode和clearTaskOnLaunch:与以前一样的问题
情况B – 我删除clearTaskOnLaunch并保持launchMode =“singleInstance”:另一个问题
  
  >开启应用程式 – My HomeActivity正在显示
  >点击一个按钮在我的应用程序中打开另一个活动 – 它应该打开
  >点击系统后退按钮 – 它返回到系统设置
  >再次单击系统后退按钮 – 我返回到我的HomeActivity
  >另一个点击后退按钮让我回到Android主屏幕

情况C – 我只删除launchMode并保持clearTaskOnLaunch:与以前一样的问题
> Sitatuion D – 我删除clearTaskOnLaunch并设置launchMode =“singleInstance”:与情况B相同

您不是从HomeActivity调用setContentView()(根据您添加的代码)。而当它不存在时,不同的设备的行为会有所不同,就像在仿真器上一样,您将看到“应用程序未安装在您的手机上”。尝试设置内容视图。
http://stackoverflow.com/questions/5261867/android-launches-system-settings-instead-of-my-app

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Android会启动系统设置,而不是我的应用