2016-03-18 48 views
0

下面是我的BroadcastReceiver类的我的全部代码,我需要访问数据库中此页......ANDROID数据库错误:不兼容的类型:INT不能转换到CursorFactory

它的“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("[email protected]") || smsBody.contains("[email protected]") || smsBody.contains("[email protected]")) { 
        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

的方法

SQLiteDatabase.openOrCreateDatabase() 

预期不同的参数比你所提供的那些。 来源:SQLiteDatabase documentation

+0

我试过......但不适合我...... – trainer

+0

最后我得到的答案是db = context.openOrCreateDatabase(DB_NAME,0,null); – trainer

+0

我使用上下文解决了问题。感谢您的建议Alexandru Ungureanu ... – trainer

相关问题