ANDROID数据库错误:不兼容的类型:int无法转换为CursorFactory

时间:2016-03-18 13:06:33

标签: android sql database cursor factory

以下是我的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();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

方法

SQLiteDatabase.openOrCreateDatabase()

预期的参数与您提供的参数不同。 资料来源:SQLiteDatabase documentation