Android 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 를 등록 하면 설치 이 벤트 를 포착 하여 해당 동작 을 수행 할 수 있 습 니 다 (데스크 톱 아이콘 추가, 시작...)
------------------------------------------------------------------------------------------------
어 지 럽 게 말 했 는 지 코드 도 올 려 주세요... 여러분, 또 어떤 좋 은 아이디어 가 있 으 신지 토론 해 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
XML이란 무엇입니까?이것은 저장, 검색 및 공유할 수 있는 형식으로 데이터를 저장하는 강력한 방법입니다. 가장 중요한 것은 XML의 기본 형식이 표준화되어 있기 때문에 시스템이나 플랫폼 간에 로컬 또는 인터넷을 통해 XML을 공유하거나...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.