Android 설정 App이 켜져 있는지 여부
5748 단어 실용적인 기교
자동 시작을 설정하려면 먼저 app가 스스로 시작할 수 있도록 해야 합니다.
첫 번째 단계 자동 시작
1. 권한이 없으면 안 된다.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
2. 우리는 라디오가 필요합니다. 여기의MainActivity.class는 네가 시작하고 싶은 Activity야.
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Intent intent2 = new Intent(context, MainActivity.class);
intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}
}
}
3. 이 방송도 등록해야 한다. 여기서 말하고자 하는 것은 켜서 완성한 방송은 시스템 방송이고 코드에 등록하는 것을 허락하지 않는다는 것이다.
<receiver android:name=".BootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.LAUNCHER" />
intent-filter>
receiver>
여기서는 시동을 걸면 실현될 수 있다.
두 번째 단계에서는 자체 부팅 여부를 제어합니다.
Shared Preferences로 로고를 저장하면 가능하다고 생각했는데, 예를 들면
public class BootReceiver extends BroadcastReceiver {
public final static String AUTO_START = "AUTO_START";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
SharedPreferences settings = context.getSharedPreferences(AUTO_START,Context.MODE_PRIVATE);
if(settings.getBoolean("AUTO_START", false)){
Intent intent2 = new Intent(context, MainActivity.class);
intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}
}
}
}
그러나 아무 소용이 없다는 것을 발견했다. 여기서 이Shared Preferences가 저장한 값을 찾을 수 없고 나도 털인 줄 모르니 다른 방법을 찾을 수밖에 없다.인터넷의 세계를 떠돌아다니며 마침내 이 제목을 보았다.Android에서 4대 구성 요소를 비활성화하고 여는 방법http://blog.csdn.net/mingli198611/article/details/17269355, 그때 멍해졌는데 4대 구성 요소를 사용할 수 있을까요?
이 글을 보고 우리가 필요로 하는 방법을 찾았다. 우리가 켜는 것을 금지할 때: 우리의 Boot Receiver를 없애면 된다.구체적으로 다음과 같다.
private void setComponentEnabled(Class> clazz, boolean enabled) {
final ComponentName c = new ComponentName(this, clazz.getName());
getPackageManager().setComponentEnabledSetting(c,
enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
: PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
먼저 이 두 파라미터를 말해 보시오.첫 번째: BootReceiver.class, 두 번째: boolean 값이 켜졌는지 여부입니다.
다시 한 번 이 방법: set Component Enabled Setting (ComponentName componentName, int new State, int flags) componentName: 구성 요소 이름 new State: 구성 요소의 새로운 상태, 세 가지 값을 설정할 수 있습니다: 사용할 수 없는 상태: COMPONENTENABLED_STATE_DISABLED 사용 가능한 상태: COMPONENTENABLED_STATE_ENABLED 기본값: COMPONENTENABLED_STATE_DEFAULT flags:비헤이비어 태그, 값은 DONTKILL_APP 또는 0.0 이 구성 요소를 포함하는 앱을 죽이는 것을 설명합니다.
여기에 앱을 켜면 시동이 걸릴지 안 걸릴지 설정합니다.하지만 저는 한마디만 더 하고 싶습니다. 여러분이 아시다시피 현재의 휴대전화는 자체 메모리가 있고 SD카드를 꽂을 수 있습니다. 안드로이드 API Level이 8보다 클 때 프로그램은 SD카드에 설치할 수 있습니다.그럼 문제가 또 생겼어요. 불행하게도 당신의 앱은 사용자에게SD카드에 설치되어 있는데, SD카드가 마운트된 것은 BOOTCOMPLETED 이 방송이 나간 후에야 시작했습니다. 소, 당신의 앱처럼 시작할 수 없습니다.하지만 걱정하지 마세요: 안드로이드 프레임은 Don't call me, I'll call you back이라고 합니다.SD 마운트가 완료되었습니다. 똑같이 방송이 있습니다.이 방송을 감청하면 돼.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 설정 App이 켜져 있는지 여부설명: 저희 앱은 때때로 켜서 자동으로 시작할지 여부를 설정할 필요가 있습니다.기계를 켜고 스스로 가동하는 것은 사실 매우 간단하다. 자동 시작을 설정하려면 먼저 app가 스스로 시작할 수 있도록 해야 합니다. 여기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.