2013-02-06 3 views
2

부팅 수신기를 간단하게 실행하려고합니다. 난 그냥 내 데이터베이스 (존재 - 테스트)에서 하나의 레코드를 얻을 필요가, 나는 토스트 메시지 (테스트 가능)? 아무 반응이 없을 때 전화 부츠 :Android BroadcastReceiver 부팅시 작동하지 않음

수신기 :

<receiver android:name=".OnBootReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
+0

나는 토스트 대신에 sharedpreferences에 쓰고 그 액티비티 체크가 맞는지 토스트 대신 권하고 싶다. 이 시나리오를 확인하는 확실한 방법입니다. –

+0

@ A - C 그래,하지만 먼저 - 내 코드에 문제가 없다고 확신 할 수 있니? – user1880779

+0

내가 잘못 볼 수있는 것은'cursor.close();'가 if 바깥에 있으므로'cursor'가'null' 인 경우 여전히 NPE를 얻을 수 있습니다. 그 토스트에 다른 토스트와 함께'else'를 만들고,''cursor is null ''을 출력하십시오. –

답변

0

BroadcastReceiver onReceive() 함수의 컨텍스트를 사용하여 토스트를 시작할 수 있다고 생각하지 않습니다. Intent를 사용하여 응용 프로그램 활동을 실행 해보십시오.

1
: 나는 실행하기 위해 노력하고있어 수신기 매니페스트 연결에

public static Cursor getAllData() 
    { 
     Cursor cursor=null; 
     if(db!=null) 
     { 
      cursor=db.query(TABLE_NAME, new String[] { TABLE_COLUMN_ID, TABLE_COLUMN_ONE, TABLE_COLUMN_TWO }, null, null, null, null, null); 
     } 

     return cursor; 
     } 

값 :

public class OnBootReceiver extends BroadcastReceiver { 

    int milibaza;  


    @Override 
    public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 


    Cursor cursor = DatabaseManager.getAllData(); 
    if(cursor !=null) 
    { 
    cursor.moveToFirst();  
    milibaza = cursor.getInt(2); 
    Toast.makeText(context, ((new StringBuilder("Vrijeme u bazi").append(milibaza).toString())), Toast.LENGTH_LONG).show(); 
cursor.close(); 
    }    
    } 
    } 

모든 데이터 방법 받기

전화를 부팅하기 전에 응용 프로그램을 실제로 실행하십시오. 다시 시작하기 전에 앱을 강제 종료하거나 APK를 설치 한 후에 앱을 실행하지 않으면 브로드 캐스트 수신기에 메시지가 수신되지 않습니다.

+0

내가 이것을 확인할 수있는 것 같습니다. –

+0

예 설치 한 후 응용 프로그램을 실행했지만 전화를 다시 시작하기 전에 응용 프로그램을 강제 종료하지 않았습니다. – user1880779

관련 문제