Android 는 어떻게 앱 데스크 톱 아이콘 을 동적 으로 변경 합 니까

가끔 씩 우 리 는 우리 가 흔히 볼 수 있 는 응용 프로그램 을 발견 할 수 있다.예 를 들 어 어떤 보물,어떤 동쪽,어떤 특별한 날 에 예 를 들 어 쌍 십일,설날 등 이다.이런 날 의 분위기 에 맞 추기 위해 데스크 톱 에서 의 응용 아이콘 이 달라 진다.사실은 이런 데스크 톱 아이콘 을 바 꾸 는 것 이다.Android 에 서 는AndroidManifest.xml에 있 는<activity-alias>태그 실현 방식(더 많은 글 은 제 위 챗 공식 계 정,왼쪽 QR 코드 를 주목 하 세 요)을 제공 합 니 다.

우 리 는 Activity 를 쓸 때마다 AndroidManifest 에서 설정 해 야 정상적으로 시작 할 수 있다 는 것 을 알 고 있 습 니 다.그 밖 에 우 리 는 그것 에 대해 별명 을 설정 할 수 있 습 니 다.즉,<activity-alias>태그 로 이 태그 의 속성 은의 속성 과 일치 하여 간단 한 분석 을 할 수 있 습 니 다.

android:icon="@mipmap/app_logo"
android:label="@string/app_name"
위의 두 속성 은 아이콘 과 탭 을 설정 하 는 데 사 용 됩 니 다.

android:name=".newsLuncherActivity"
별명 name 은 마음대로 쓸 수 있다 고 하지만 제 가 말 하고 싶 은 것 은 최대한 하나의 activity 로 설정 하 는 것 입 니 다.가능 한 한 하나의name 과 일치 하도록 하 는 것 입 니 다.만약 에 activity 의 이름 으로 설정 하지 않 으 면 일부 핸드폰 에 문제 가 있 을 것 입 니 다.지금 제 가 가지 고 있 는 테스트 기 보다.

android:enabled="false"
이것 은 별명 을 표시 할 지 여부 입 니 다.기본 값 은 true 입 니 다.

android:targetActivity=".MainActivity"
이것 이 중요 합 니 다.별명 을 지정 하여 시작 하 는 activity 는 원래 시작 하 는 입구 activity 의 name 과 일치 하고탭 아래 에 있어 야 합 니 다.
구체 적 인 실현 은 다음 과 같다.

<application
 android:allowBackup="true"
 android:icon="@mipmap/ic_launcher"
 android:label="@string/app_name"
 android:supportsRtl="true"
 android:theme="@style/AppTheme">
 <activity android:name=".MainActivity">
 <intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity>
</application>
위 에는 기본 아이콘 과 기본 activity 입구 가 있 습 니 다.

<application
 android:allowBackup="true"
 android:icon="@mipmap/ic_launcher"
 android:label="@string/app_name"
 android:supportsRtl="true"
 android:theme="@style/AppTheme">
 <activity android:name=".MainActivity">
 <intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity>
 <activity-alias
 android:name=".newsLuncherActivity"
 android:enabled="false"
 android:icon="@mipmap/app_logo"
 android:label="@string/app_name"
 android:targetActivity=".MainActivity">
 <intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity-alias>
</application>
위 는탭 을 추가 한 후 구체 적 인 시작 방식 입 니 다.서버 쪽 에 스위치 를 설정 할 수 있 습 니 다.데스크 톱 아이콘 을 변경 하 라 고 요청 할 때 PackageManager 대상 이 제공 하 는 setComponent Enabled Setting()방법 으로 현재 Component 구성 요 소 를 닫 고 별명 에 해당 하 는 Component 구성 요 소 를 시작 하면 됩 니 다.아이콘 을 빠르게 바 꿀 수 있 도록 Luncher 응용 코드 를 다시 시작 할 수 있 습 니 다.name 은 자신 이 클래스 이름 을 정의 하 는 것 입 니 다.모든 경 로 를 전달 해 야 한 다 는 것 을 기억 하 십시오.예 를 들 어:

com.ming.abner.changelauncher.newsLuncherActivity
 private void changeLuncher(String name) {
 PackageManager pm = getPackageManager();
 pm.setComponentEnabledSetting(getComponentName(),
  PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
 pm.setComponentEnabledSetting(new ComponentName(MainActivity.this, name),
  PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
 //Intent    Launcher   
 Intent intent = new Intent(Intent.ACTION_MAIN);
 intent.addCategory(Intent.CATEGORY_HOME);
 intent.addCategory(Intent.CATEGORY_DEFAULT);
 List<ResolveInfo> resolves = pm.queryIntentActivities(intent, 0);
 for (ResolveInfo res : resolves) {
  if (res.activityInfo != null) {
  ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
  am.killBackgroundProcesses(res.activityInfo.packageName);
  }
 }
 }
}
우 리 는 여러 개 를 정의 할 수 있 습 니 다.서로 다른 때 에 우 리 는 서로 다른 아이콘 을 동적 으로 바 꿀 수 있 습 니 다.
권한 추가 기억 하기:

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 Android 가 앱 데스크 톱 아이콘 을 어떻게 동적 으로 바 꾸 는 지 여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기