2014-03-27 4 views
0

사용자가 앱을 열 때마다 내 앱에서 처리해야하는 항목을 기반으로 이벤트를 생성해야한다는 요구 사항이 있습니다. 나는 안드로이드가 그 사건을 방송하지 않는다는 것을 깨닫는다. 그러므로, 나는 붙어있어 일을 찾고있다.앱 열기 이벤트 감지 방법

나는 또한 같은 비슷한 일을 몇 가지 애플 리케이션을 가로 질러 온 :

노 젓는 걸 모바일 보안 :이 열 응용 프로그램을 검사합니다.

볼트 : 잠긴 앱을 열 때 암호 키패드를 표시합니다.

누구나이 앱이 앱 오프닝 이벤트를 감지하는 방법을 알려주거나 나를 올바른 방향으로 안내 할 수 있습니까?

나는 이전에 Windows API Hooking을 수행했으며 안드로이드에서도이 기술을 사용할 수 있는지 확신하지 못했습니다. "Cydia Substrate"및 "Xposed"와 같은 런타임 코드 삽입 프레임 워크를 접했습니다. 이러한 것들이 내 문제를 해결할 수 있습니까?

답변

-1

나는 해결 방법을 취함으로써 문제를 해결했다. 그것은 정확한 해결책이 아니지만 내 문제가 해결되었습니다. 내가 한 것은 AlarmManager을 사용하여 매번 액티비티 스택의 새로운 애플리케이션 상단을 확인하는 반복 서비스 (10 초 후)를 시작한 것입니다. 응용 프로그램이 마지막 응용 프로그램과 다른 경우 (이미 저장 한 경우) 열어 본 새 응용 프로그램입니다. 이 방법의 가장 큰 단점은 배터리가 많이 소모되지만 적절한 기간을 선택하고 장치를 깨우지 않아야한다는 것입니다.

이 서비스 출시 코드

은 아래와 같습니다 : 당신이 활동 스택 맨 위에 새로운 응용 프로그램을 확인해야

//Start a Service that is started every 5 seconds 
AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Calendar cal = Calendar.getInstance(); 
Intent intent = new Intent(MyActivity.this, MyService.class); 
PendingIntent pintent = PendingIntent.getService(context, 0, intoo, 0); 
alarm.setRepeating(AlarmManager.RTC, cal.getTimeInMillis(), 5*1000, pintent); 

MyService.java에서.

0

각 Activity의 onStart() 또는 onCreate() 메소드 내에서 처리됩니다. 나는 귀하의 수표를 onStart() 안에 넣을 것입니다.

@Override 
    protected void onStart() { 
     super.onStart(); 
//..Do processing. 
} 

onStop 또는 onPause 메서드 내에 특정 항목을 저장하여 사용자가 앱을 나간 후에도 데이터가 유지되도록 할 수 있습니다. 그것은 조각이 있다면

, 다음 U는 onAttach에 그것을 할 수 있습니다

@Override 
    public void onAttach(Activity activity) { 
//..Do Processing. 
     super.onAttach(activity);  
    } 
+0

내 자신의 앱에 대해 이야기하고 있습니다. 사실 내 애플 리케이션이 아닌 사용자가 앱을 열 때 감지해야합니다. – Faheem

+0

Hrm ... 아마도 Broadcast Receiver를 사용해보십시오. http://developer.android.com/intl/zh-tw/reference/android/content/BroadcastReceiver.html – Gene

+0

Android가 앱 오프닝 이벤트를 브로드 캐스트하지 않습니다. 따라서 방송 수신기를 통해 수행 할 수 없습니다. 다른 해결책이 필요합니다. – Faheem