0

서비스가 실행중인 응용 프로그램이 있습니다. 이 서비스는 시간을 기준으로 알림을 보냅니다 (예 : 알림을 전송하는 11 시간에서 11:30에 다른 알림을 보냄)android에서 알림을 클릭하십시오.

사용자가 알림을 클릭하면 Android에서 Dialog 클래스를 표시해야합니다)를 응용 프로그램에 추가합니다.

내 솔루션은 다음과 같습니다. 사용자가 알림을 클릭하고 대화 상자를 표시 할 때 응용 프로그램의 MainActivity를 시작합니다.

문제점 : Click을 누르면 사용자가 응용 프로그램의 첫 번째 화면으로 이동합니다. 알림을 클릭하는 동안 다른 화면에있는 경우 (내 응용 프로그램에서보기 호출기 사용) 현재 사용자가 있고 첫 번째 화면에 있지 않은 대화 상자가 표시됩니다.

이 문제를 해결할 수 있습니까? 귀하의 솔루션에 감사드립니다. 응용 프로그램 클래스를 사용하면 같은 정적 문맥을 만들어야 갖는

: 그 작업을 수행하는

+0

그런 다음'Notification'에서'Pending Intent'로'Page Position'을 설정하고'mainActivity'에서이 값을 가져 와서'View Pager'에서 해당 위치 당 페이지를로드하십시오. –

답변

0

한 가지 방법은 응용 프로그램 클래스 (http://www.intertech.com/Blog/androids-application-class/ 응용 프로그램 클래스를 만드는 방법에 대한 예) : 현재의 활동에 대한 정적 참조를 만들 것입니다

public static FragmentActivity currentActivity; 

이제이 인스턴스를 가지고있는 각 Activity.onCreate에 채워야합니다.

그런 다음이 정적 컨텍스트를 사용하여 대화 상자를 만들 수 있습니다. 대화를 들어

감사합니다,

0

은 사용자가 당신이하는 Theme.Dialog를 테마 활동을 소개하는 당신에게 보류중인 의도 통지와 함께 추가 it'l 최고의 제품군에 있음을 같은 화면에 표시 할 빌더. 마찬가지로 : 당신에

// This sets the pending intent that should be fired when the user clicks the 
    // notification. Clicking the notification launches a new activity. 
     Intent intent = new Intent(this, YourDialogActivity.class); 
     //set flags according to your implementation 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_HISTORY); 
//  startActivity(intent); 

      // Because clicking the notification launches a new ("special") activity, 
      // there's no need to create an artificial back stack. 
      PendingIntent resultPendingIntent = 
        PendingIntent.getActivity(
        this, 
        0, 
        intent, 
        PendingIntent.FLAG_ONE_SHOT //also check the flags here 
      ); 
      mBuilder.setContentIntent(resultPendingIntent); 

     // Gets an instance of the NotificationManager service 
     NotificationManager mNotifyMgr = (NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE); 
     // Builds the notification and issues it. 
     mNotifyMgr.notify(integerHere, mBuilder.build()); 

매니페스트, 테마 대화와 활동을 추가

<activity 
      android:name="com.package.YourDialogActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.Dialog" /> 

을 상세한 구현을 위해, 참조 : Define the Notification's Action

이 방법, 당신의 MainActivity를 호출하지 않습니다 귀하의 응용 프로그램과 DialogActivity는 단지 응용 프로그램을 열고 응용 프로그램이 최소화되었을 때 마지막으로 열린 활동에 대한 대화 상자를 보여줍니다.

+0

솔루션 주셔서 감사합니다, 내 질문에 언급 한 문제를 해결, 나는 또한 사건을 처리 할 필요가 사용자가 알림을 클릭하고 응용 프로그램이 이미 실행되고 있지 않은 경우, 나는 주요 활동 백그라운드에서 (즉, 응용 프로그램을 실행 한 다음 대화 상자를 표시하십시오). 어떻게 그 사건을 처리 할 수 ​​있니? – user1423561

+0

당신은 환영합니다, pls upvote/그에 따라 대답을 수락하십시오. 앱의 상태가 서비스에 있는지 확인해야합니다. 앱이 실행되고 있지 않다면 앱을 시작해야합니다. 따라서 기본 활동을 시작하는 동안 의도/의도 값을 전달하고 해당 인 텐트의 값을 확인하세요. onCreate 또는 onResume, 결과적으로 대화 상자가 표시됩니다. 현재 구현이 도움이된다고 생각합니다. if-else에 넣을 수 있습니다. – user2450263

관련 문제