Android apk 설치 후 자동 으로 데스크 톱 아이콘 추가 및 시작 시도

5300 단어 xmlandroidScheme
앞의 문 제 는 포럼 의 한 친구 가 제기 한 것 이다. "어떻게 앱 이 휴대 전화 에 설치 되 었 을 때 자동 으로 데스크 톱 에 단축 키 를 추가 합 니까?" 두 번 째 문 제 는 인터넷 에서 본 것 이다. "apk 설치 후 자동 시작 방법"
응용 프로그램 이 설 치 된 후에 관련 방송 이 포착 되 지 않 으 면 할 수 없 음 이 분명 하 다. 사실은 있다. Intent. ACTIONPACKAGE_ADDED。
Launcher 의 응용 목록 은 바로 이렇게 합 니 다.
/**
     * Registers various intent receivers. The current implementation registers
     * only a wallpaper intent receiver to let other applications change the
     * wallpaper.
     */
    private void registerIntentReceivers() {
        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
        filter.addAction(Intent.ACTION_PACKjAGE_REMOVED);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addDataScheme("package");
        registerReceiver(mApplicationsReceiver, filter);
        filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        registerReceiver(mCloseSystemDialogsReceiver, filter);
    }
 
나 는 그대로 조롱박 을 그 려 보 았 다. 직접 나의 응용 프로그램 에서 BroadcastReceiver 를 실현 하고 XML 에 등록 했다. action = Intent. ACTIONPACKAGE_ADDED 가 포 획 했 지만 잡 히 지 않 았 습 니 다.
나중에 문 서 를 찾 아 보 니 이것 은 통 하지 않 는 다 는 것 을 알 게 되 었 다.
public static final  String
 
ACTION_PACKAGE_ADDED
Broadcast Action: A new application package has been installed on the device. The data contains the name of the package. Note that the newly installed package does  not  receive this broadcast.
자신 을 응용 하 는 과정 에서 BroadcastReceiver 를 통 해 Add 메 시 지 를 포착 하 는 것 은 안 될 것 같 지만, 나 는 또 다른 절충 적 인 실현 방법 인 다른 응용 을 통 해 보조 적 으로 실현 하 는 것 을 생각 했다.
먼저 ntent. ACTION 을 포함 하 는 것 을 실현 해 야 합 니 다.PACKAGE_ADDED 가 캡 처 한 BroadcastReceiver 애플 리 케 이 션 은 먼저 휴대 전화 에 설치 되 어 있 으 며, 그 가 메 시 지 를 받 은 후에 당신 의 애플 리 케 이 션 에 라디오 를 되 돌려 줍 니 다.응용 프로그램 에서 대응 하 는 BroadcastReceiver 를 실현 해 야 합 니 다.
구체 적 인 실현:
< 보조 apk >
public class PackageChangeReceiver extends BroadcastReceiver {

      @Override
      public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
        final String packageName = intent.getData().getSchemeSpecificPart();
        final boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
        //        
        Intent notifyIntent = new Intent("com.app.action.notifier");
        notifyIntent.setPackage(packageName);
        notifyIntent.putExtra("action", action);
        notifyIntent.putExtra("replace", replacing);
            context.sendBroadcast(notifyIntent);
      }

}

 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.app.notifier"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <receiver android:name="PackageChangeReceiver">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED"></action>
                <action android:name="android.intent.action.PACKAGE_CHANGED"></action>
                <action android:name="android.intent.action.PACKAGE_REMOVED"></action>
                <data android:scheme="package"></data>
            </intent-filter>
        </receiver>

    </application>
</manifest>
 
< 당신 의 앱 >
public class PackageChangeReceiver extends BroadcastReceiver {
      
      @Override
      public void onReceive(Context context, Intent intent) {
            final String action = intent.getStringExtra("action");
            boolean replace = intent.getBooleanExtra("replace", false);
            if(action.equals(Intent.ACTION_PACKAGE_ADDED)){
                 // do some thing you want.
            }
      }
}
xml 에 라디오 등록
<receiver android:name="PackageChangeReceiver">
     <intent-filter>
         <action android:name="com.app.action.notifier"></action>
     </intent-filter>
</receiver>
 
장단 점
단점: 보조 apk 를 먼저 설치 해 야 합 니 다.
장점: 한 번 만 설치 한 후 응용 프로그램 에서 만 구현 되 고 XML 에 BroadcastReceiver 를 등록 하면 설치 이 벤트 를 포착 하여 해당 동작 을 수행 할 수 있 습 니 다 (데스크 톱 아이콘 추가, 시작...)
------------------------------------------------------------------------------------------------
어 지 럽 게 말 했 는 지 코드 도 올 려 주세요... 여러분, 또 어떤 좋 은 아이디어 가 있 으 신지 토론 해 보 세 요.

좋은 웹페이지 즐겨찾기