앱이 있으며 2 가지 활동이 있습니다. 설치 후 앱 실행, differenct 동작 (Android)
<activity android:name=".LauncherActivity"
android:theme="@style/LauncherTheme"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="MainActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait"/>
1.
는(-r 응용 프로그램을 설치 ADB) 명령 라인을 통해 앱을 설치합니다 (I 예상).
앱 아이콘을 탭하여 열면 실행기 기능이 표시됩니다. 그런 다음 MainActivity에 대한 작업을 시작하면 MainActivity가 표시됩니다.
HOME을 누른 다음 다시 앱 아이콘을 누르면 MainActivity가 다시 표시됩니다.
2 (예외?)
packageinstaller를 통해 앱을 설치하십시오.
설치가 완료되면 패키지 설치 프로그램의 "열기"버튼을 탭하면 LauncherActivity가 표시됩니다. 그런 다음 MainActivity, MainActivity가 시작됩니다.
홈을 탭한 다음 앱 아이콘을 다시 탭하면 LauncherActivity가 다시 표시됩니다 !! 내 LauncherActivity에서
private void startMainActivity() {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
내가 mLaunchIntent
InstallAppProgress.java
mLaunchIntent = getPackageManager().getLaunchIntentForPackage(mAppInfo.packageName);
ApplicationPackageManager.java
@Override
public Intent getLaunchIntentForPackage(String packageName) {
// First see if the package has an INFO activity; the existence of
// such an activity is implied to be the desired front-door for the
// overall package (such as if it has multiple launcher entries).
Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
intentToResolve.addCategory(Intent.CATEGORY_INFO);
intentToResolve.setPackage(packageName);
List<ResolveInfo> ris = queryIntentActivities(intentToResolve, 0);
// Otherwise, try to find a main launcher activity.
if (ris == null || ris.size() <= 0) {
// reuse the intent instance
intentToResolve.removeCategory(Intent.CATEGORY_INFO);
intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER);
intentToResolve.setPackage(packageName);
ris = queryIntentActivities(intentToResolve, 0);
}
if (ris == null || ris.size() <= 0) {
return null;
}
Intent intent = new Intent(intentToResolve);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName(ris.get(0).activityInfo.packageName, ris.get(0).activityInfo.name);
return intent;
}
로 souce에, packageinstaller 시작 활동 조사
나는 아무 정보 활동이 없기 때문에 의도입니다 : 내가 혼란 스러워요
Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
intentToResolve.addCategory(Intent.CATEGORY_LAUNCHER);
intentToResolve.setPackage(packageName);
. 차이 행동이있는 이유는 무엇입니까? 도움! 를 통해
다른 의도 앱이 실행되는 방식에 따라 해고 때문이다if (!isTaskRoot()) {
final Intent intent = getIntent();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(intent.getAction())) {
finish();
return;
}
}
(오픈이 여전히 당신을위한 문제입니다,하지만 난 내 MainActivity이를 포함하여이 문제를 해결하는 경우