본문 바로가기

개발 관련 지식/안드로이드(Android)

[안드로이드] 어플리케이션 설치 또는 제거 이벤트 확인 방법

* 어플리케이션 설치 또는 제거 이벤트 확인 방법

 

 

안녕하세요 송군함대입니다~!^-^/

특정 어플리케이션이 설치되거나 삭제되었을때, 이를 확인할 수 있는 방법이 궁금하여 찾다보니,

마켓에서 어플리케이션을 받아 설치하거나 삭제할때 이벤트가 발생한다는 사실을 알았습니다.

이 이벤트를 받기 위해서는 BroadcastReceiver 를 이용 하면 됩니다.

자, 차근차근 알아보도록 할까요?!!

 

1. AndroidManifest.xml 파일에 BroadcastReceiver 등록

[AndroidManifest.xml]

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.andtestapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".AndTestAppActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".PackageReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REMOVED" />
                <action android:name="android.intent.action.PACKAGE_REPLACED" />

                <data android:scheme="package" />
            </intent-filter>
        </receiver>

        
    </application>

</manifest>

 

 

2. BroadcastReceiver 를 상속받은 PackageReceiver 클래스를 생성

[PackageReceiver.java]

 

package com.example.andtestapp;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class PackageReceiver extends BroadcastReceiver {

 @Override
 public void onReceive(Context context, Intent intent) {
  // TODO Auto-generated method stub
  String packageName = intent.getData().getSchemeSpecificPart();
  String action = intent.getAction();
  
  if(action.equals(Intent.ACTION_PACKAGE_ADDED))
  {
   Log.e("test song", "Package ADDED : " + packageName);
  }
  else if(action.equals(Intent.ACTION_PACKAGE_REMOVED))
  {
   Log.e("test song", "Package REMOVED : " + packageName);
  }

 }

}

 

3. BroadcastReceiver  등록

[AndTestAppActivity.java] 

 

package com.example.andtestapp;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class AndTestAppActivity extends Activity {

 private PackageReceiver mPackageReceiver = new PackageReceiver();
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  registerReceiver(mPackageReceiver, new IntentFilter(
    Intent.ACTION_PACKAGE_ADDED));

 }

 @Override
 protected void onDestroy() {
  // TODO Auto-generated method stub
  super.onDestroy();
  unregisterReceiver( mPackageReceiver );
 }
 
}

 

4. 마켓에서 어플을 다운 받거나, 마켓에서 다운 받은 어플을 삭제하여 로그를 확인