2016-09-05 3 views
9

우리는 두 가지 방법으로 시작할 수있는 활동과 함께 응용 프로그램이 있습니다이러한 "잘못된"의도가있는 이유는 무엇입니까?

  • 다른 활동에서을 - 항상 깊은 I 마찬가지로 지금까지

연결에서

  • 채워 몇 가지 추가 데이터 이것이 항상 잘 작동하는 것을 볼 수 있습니다. 우리는 데이터 URI가있는 Intent.ACTION_VIEW을 얻거나 문자열 추가 문자를 얻습니다.

    그러나 조치는 어디 까지나 Intent.ACTION_MAIN이고 추가 데이터는 없습니다. 다음과 같은 의도의 toString()

    (클래스 이름 변경)입니다 : Intent.getDataString() 반환 널 (null),

    Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10400000 cmp=com.example.OurActivity } 
    

    Intent.getExtras()는 null를 돌려줍니다.

    어떤 경우에 이런 일이 발생할 수 있습니까? 활동 카테고리의 카테고리가 왜 Intent.CATEGORY_LAUNCHER입니까? 사용자에게 적절한 콘텐츠를 표시하는 데 필요한 데이터를 어떻게 얻을 수 있습니까?

    launchMode은 활동에 지정되지 않았습니다. AndroidManifest.xml에있는 유일한 IntentFilter은 딥 링크 (런처 카테고리가 아님) 용입니다.

    문제는 Android 4-6에서 다양한 기기에서 발생합니다.

    편집 : 플래그를 언급하는 것을 잊었다 : 인쇄 출력으로

    는 텐트의 플래그 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_BROUGHT_TO_FRONT을 수 있습니다 제안합니다. 그게 여기서 관련이있을 수 있다고 생각합니다.

  • 답변

    1

    나는 믿는다, 나는 그것을 못을 박았다 :

    있는 거 발사기, 사용자가 응용 프로그램의 Activities으로 시작할 수 있습니다 Nova Launcher 같은 대신 정상적인 흐름의 :

    enter image description here

    예를 들어과 같이 바탕 화면에 바로 가기를 추가하여 계정 설정 활동으로 Gmail 클라이언트를 시작할 수 있습니다.

    이 경우 활동은 빈 Extras으로 시작되며 기술적으로는 실행 프로그램 Activity이됩니다.

    +0

    나는 당신이 옳다고 믿습니다. Nova Launcher는 어떤 행동이나 카테고리도 보내지 않았지만 다른 발사자는 약간 다른/올바르게 할 수 있습니다. –

    0

    AndroidManifest.xml이 빌드 시스템에서 조작되었으므로 여기에 포함 된 라이브러리가 매니페스트에 항목을 추가하는 경우가 종종 발생합니다.

    매니페스트에 IntentFilter가 하나만 있다고 명시되어 있지만 설치 한 앱을 실제로 확인했는지 (소스 코드에 넣을 것이라고 생각하는 것에 의존하지 않고) 매니페스트의 내용을 확인 했습니까?

    App Detective (내가 작성한 앱)를 포함하여 설치된 앱의 매니페스트를 표시하기 위해 Play 스토어에서 다양한 앱을 사용할 수 있습니다.

    +0

    좋은 의견! 그러나 그 활동을 위해 주입 된 것은 없습니다. (멋진 애플 리케이션! 어쩌면 내 dev에 응용 프로그램 (https://github.com/roys/java-android-developertools#developer-tools-for-android)와 함께 ManifestViewer를 변경할 수 있습니다.) –

    관련 문제