Android BroadcastReceiver On Boot无法正常工作

时间:2013-02-06 22:50:40

标签: android broadcastreceiver toast boot

我正在尝试运行一个简单的启动接收器。我只需要从我的数据库中获取一条记录(确实存在 - 经过测试),我正在用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" />

2 个答案:

答案 0 :(得分:1)

确保在启动手机之前实际运行您的应用程序。如果您在重新启动之前强制停止应用程序,或者在安装APK后未运行应用程序,则您的广播接收器将不会收到任何消息。

答案 1 :(得分:0)

我认为你不能使用BroadcastReceiver onReceive()函数中的上下文启动Toast。尝试使用Intent来启动Application Activity。