마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 부팅시 서비스 실행

0 추천

현재 FileObserver 함수로 안드로이드폰 재부팅시 서비스를 백그라운드로 올려서 

실시간 감시를 하고싶은데 .... 서비스불러와서 onCreate에서 Toast출력은 되는데

실질적인 FileObserver의 startWatching()이 돌아가지를 않네요 ㅠ 

도움좀 부탁드려요

앗 그리고 Activity 없이 서비스만 실행되는거에요... 

<Manifest.xml>

<receiver android:name=".MyBroadcast" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
         <intent-filter android:priority="9999">
               <action android:name="android.intent.action.BOOT_COMPLETED" />
              </intent-filter>
       </receiver>
        <service android:name="com.example.fileob_ex.MyService" android:enabled="true">
            <intent-filter>
                <action android:name="com.example.fileob_ex.MyService"></action>
            </intent-filter>
        </service>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
 
<MyBroadcast.class>
public class MyBroadcast extends BroadcastReceiver {
private static final String TAG = "FileObserverActivity";
 
@Override
 
    public void onReceive(Context context, Intent intent) {
     Log.d(TAG,"리시버 호출");
        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())){
            Log.d(TAG,"부팅완료");
            Toast.makeText(context, "부팅완료!!", Toast.LENGTH_SHORT).show();
            
            //context.startService(new Intent(context, MyService.class));
            Intent i = new Intent(context, MyService.class);
            context.startService(i);
            
            //ComponentName comp = new ComponentName(context.getPackageName(),MyService.class.getName());
           // ComponentName service = context.startService(new Intent().setComponent(comp));
 
        }
 
    }
}
 
<MyService.class>
public class MyService extends Service {
 
private FileObserver observer;
private static final String pathToWatch = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
private static final String TAG = "FileObserverActivity";
String Save_Path;
String Save_folder = "/test/";
private int count=0;
 
 
@Override
public IBinder onBind(Intent intent) {
return null;
}
 
@Override
public void onCreate() {
String ext = Environment.getExternalStorageState();
if(ext.equals(Environment.MEDIA_MOUNTED)){
Save_Path=Environment.getExternalStorageDirectory().getAbsolutePath() + Save_folder;
}
 
 
 
Toast.makeText(getBaseContext(), "서비스 시작", Toast.LENGTH_LONG).show();
}
@Override
public void onStart(Intent intent, int startId){
super.onStart(intent, startId);
 
Notification notification = new Notification(R.drawable.ic_launcher, "모니터 서비스 실행됨", System.currentTimeMillis());
notification.setLatestEventInfo(getApplicationContext(), "APK Monitor", "실시간 모니터링중...", null);
startForeground(1, notification);
 
observer = new FileObserver(pathToWatch) {
 
@Override
public void onEvent(int event, String path) {
//128  : 다운로드 완료시 , usb로 저장시 
//32   : 디렉토리 오픈시
//512  : 파일삭제
 
Log.d(TAG, "File Changed --> Path = " + pathToWatch +"/"+ path);
Log.d(TAG, "File Changed --> Event = " + event);
if(event==128){
Log.d(TAG,"야호" + path);
 
File dir = new File(Save_Path);
if(!dir.exists()){
dir.mkdir();
Log.d(TAG,"디렉토리 생성");
}
}
}
};
observer.startWatching();
 
 
 
}
}
 
 
 
cansus (200 포인트) 님이 2014년 6월 3일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...