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 마운트가 완료되었습니다. 똑같이 방송이 있습니다.이 방송을 감청하면 돼.

좋은 웹페이지 즐겨찾기