以下是我的BroadcastReceiver类的完整代码,我需要从这个页面访问数据库......
它在" openOrCreateDatabase"上出现错误请帮帮我....
我如何从一个扩展BroadcastReceiver的类中访问数据库。 。 。 。
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Handler;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;
import android.media.AudioManager;
import android.os.Bundle;
import static android.database.sqlite.SQLiteDatabase.openOrCreateDatabase;
public class RecieveSMS extends BroadcastReceiver {
public static final String SMS_BUNDLE = "pdus";
SQLiteDatabase db;
DevicePolicyManager devicePolicyManager;
ComponentName demoDeviceAdmin;
static final String TAG = "DevicePolicyDemoActivity"; //TAG Property
MediaPlayer mp, mpVibrate , mpRing ;
private static String PATH = "/data/data/com.example.controlmob/databases/";
private static String DB_NAME = "myDataBase.db";
@Override
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
assert sms != null;
for (Object sm : sms) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sm);
devicePolicyManager = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
demoDeviceAdmin = new ComponentName(context, DemoDeviceAdminReceiver.class);
db = SQLiteDatabase.openOrCreateDatabase(DB_NAME,Context.MODE_PRIVATE, null);
String smsBody = smsMessage.getMessageBody();
/*---temp : data For test----*/
if (smsBody.contains("password@silent") || smsBody.contains("PASSWORD@SILENT") || smsBody.contains("Password@Silent")) {
final String slt = smsMessage.getMessageBody();
final String bf = slt.split("@")[0].toLowerCase();
final String af = slt.split(("@"))[1].toLowerCase();
Toast.makeText(context, bf, Toast.LENGTH_SHORT).show();
if (bf.trim().length() == 0)
{
Toast.makeText(context, "NO DATA...", Toast.LENGTH_LONG).show();
return;
}
else {
Cursor cn = db.rawQuery("SELECT * FROM myTable WHERE passcode='" + bf + "'", null);
if (cn.moveToFirst())
{
}
}
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
} else if (smsBody.contains("ring") || smsBody.contains("RING") || smsBody.contains("Ring")) {
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
mpRing = MediaPlayer.create(context,R.raw.status_ring);
mpRing.start();
} else if (smsBody.contains("vibrate") || smsBody.contains("VIBRATE") || smsBody.contains("Vibrate")) {
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
mpVibrate = MediaPlayer.create(context,R.raw.status_vibration);
mpVibrate.start();
} else if (smsBody.contains("callme") || smsBody.contains("CALLME") || smsBody.contains("CallMe")) {
Intent in = new Intent(Intent.ACTION_CALL, Uri.parse("tel:8907417383"));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
context.startActivity(in);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(context, "yourActivity is not founded", Toast.LENGTH_SHORT).show();
}
} else if (smsBody.contains("resetpass") || smsBody.contains("RESETPASS") || smsBody.contains("ResetPass")) {
Toast.makeText(context, "Locking device...", Toast.LENGTH_LONG).show();
Log.d(TAG, "RESETing device now - all user data will be ERASED to factory settings");
devicePolicyManager.resetPassword("qwerty", DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
devicePolicyManager.lockNow();
} else if (smsBody.contains("play") || smsBody.contains("PLAY") || smsBody.contains("Play")) {
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setStreamVolume(AudioManager.STREAM_MUSIC,am.getStreamMaxVolume(AudioManager.STREAM_MUSIC),0);
mp = MediaPlayer.create(context, R.raw.play_alert);
mp.start();
// wait 5 sec... then stop the player.
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mp.stop();
}
}, 10000);//millisec.
}
Toast.makeText(context, smsBody, Toast.LENGTH_SHORT).show();
}
}
}
}
答案 0 :(得分:0)