2

シンプルなオンブートレシーバーを実行しようとしています。データベースから 1 つのレコードを取得する必要があるだけです (これは存在します - テスト済み)。Toast メッセージでテストしています (それは可能ですか?)。電話の起動時に何も起こりません:

レシーバー:

    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();   
    }              
    } 
    }

すべてのデータ メソッドを取得します。

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; 
        }

実行しようとしているレシーバーに接続されたマニフェストの値:

 <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" />
4

2 に答える 2

1

電話を起動する前に、アプリケーションを実際に実行してください。再起動する前にアプリを強制停止した場合、または APK のインストール後にアプリを実行しなかった場合、ブロードキャスト レシーバーはメッセージを受信しません。

于 2013-02-06T22:54:31.123 に答える
0

BroadcastReceiver onReceive() 関数のコンテキストを使用して Toast を起動できるとは思いません。代わりにインテントを使用してアプリケーション アクティビティを起動してみてください。

于 2013-02-07T00:16:32.177 に答える