Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在广播短信接收器中使用数据库方法_Java_Android_Android Studio - Fatal编程技术网

Java 如何在广播短信接收器中使用数据库方法

Java 如何在广播短信接收器中使用数据库方法,java,android,android-studio,Java,Android,Android Studio,我有一个代码,应该导入到数据库时收到短信。 我的问题是,我不知道如何在广播接收器类中调用数据库方法 我想这样称呼: TouliosDB.eisagoghfitti(temaxismeno_短信[1]、temaxismeno_短信[2]、temaxismeno_短信[3]、temaxismeno_短信[4]) 在那里我得到了它像评论!我知道这对一些人来说既愚蠢又简单,但我对java还是新手,我使用的是android studio 2.0 DatabaseHelper.java: package t

我有一个代码,应该导入到数据库时收到短信。 我的问题是,我不知道如何在广播接收器类中调用数据库方法 我想这样称呼:
TouliosDB.eisagoghfitti(temaxismeno_短信[1]、temaxismeno_短信[2]、temaxismeno_短信[3]、temaxismeno_短信[4])

在那里我得到了它像评论!我知道这对一些人来说既愚蠢又简单,但我对java还是新手,我使用的是android studio 2.0

DatabaseHelper.java:

package toulios.ptixiakh.toulios;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME="Toulios.db";
public static final String TABLE_NAME="Foitites_table";
public static final String Col_AM="AM";
public static final String Col_ONOMA="ONOMA";
public static final String Col_EPITHETO="EPITHETO";
public static final String Col_EXAMINO="EXAMINO";

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
   // SQLiteDatabase db=this.getWritableDatabase();
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + TABLE_NAME+"(AM INTEGER PRIMARY KEY,ONOMA TEXT,EPITHETO TEXT, EXAMINO INTEGER)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS"+TABLE_NAME);
    onCreate(db);
}
public boolean eisagoghfititi(String am,String onoma,String epitheto,String examino)
{
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(Col_AM,am);
    contentValues.put(Col_ONOMA,onoma);
    contentValues.put(Col_EPITHETO,epitheto);
    contentValues.put(Col_EXAMINO,examino);
    long result = db.insert(TABLE_NAME,null,contentValues);
    if(result == -1)
        return false;
    else
        return true;
}
}
IncomingSMSReceiver.java

package toulios.ptixiakh.toulios;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class  IncomingSMSReceiver extends  BroadcastReceiver{

private static final String SMS_RECEIVED ="android.provider.Telephony.SMS_RECEIVED";

@Override
public void onReceive(Context _context, Intent _intent) {

    if (_intent.getAction().equals(SMS_RECEIVED)) {
        Bundle bundle = _intent.getExtras();
        if (bundle != null) {

            Object[] pdus = (Object[]) bundle.get("pdus");

            SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < pdus.length; i++)
                messages[i] = SmsMessage
                        .createFromPdu((byte[]) pdus[i]);
            for (SmsMessage message : messages) {
                String strPhoneNo = message.getOriginatingAddress();
                String msg = message.getMessageBody();
                if (msg.startsWith("02"))
                {
                    Toast.makeText(_context, "Whats up!!", Toast.LENGTH_LONG).show();
                }
                if (msg.startsWith("01")){
                     try {
                        final String[] temaxismeno_sms = msg.split(":");

//TouliosDB.eisagoghfititi(temaxismeno_sms[1],temaxismeno_sms[2],temaxismeno_sms[3],temaxismeno_sms[4]);

                                     }
                                 });
                             }
                         }
                        Toast.makeText(_context, "Egine eisagwgh fititi!!", Toast.LENGTH_LONG).show();
                        String message1 = "H Eisagwgh egine sthn vash.";// minima pou tha stalthei
                        SmsManager sms = SmsManager.getDefault();
                        sms.sendTextMessage(strPhoneNo, null, message1, null, null);
                        Toast.makeText(_context, "O fititis idopiithike", Toast.LENGTH_LONG).show();
                        }
                    catch (Exception e)
                        {
                        Toast.makeText(_context, "SMS failed, please try again.",
                                Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                        }
            }}
        }
    }
}
}

我真的不明白你的问题。只需从类DatabaseHelper调用您的方法。替换
TouliosDB.eisagoghfitti(temaxismeno_短信[1]、temaxismeno_短信[2]、temaxismeno_短信[3]、temaxismeno_短信[4])


dbHelper.eisagoghfithiti(temaximeno_sms[1]、temaximeno_sms[2]、temaximeno_sms[3]、temaximeno_sms[4])

我真的不明白你的问题。只需从类DatabaseHelper调用您的方法。替换
TouliosDB.eisagoghfitti(temaxismeno_短信[1]、temaxismeno_短信[2]、temaxismeno_短信[3]、temaxismeno_短信[4])


dbHelper.eisagoghfithiti(temaximeno_sms[1]、temaximeno_sms[2]、temaximeno_sms[3]、temaximeno_sms[4])

您需要在IncomingSMSReceiver中创建DatabaseHelper对象,OnReceive方法中的对象不在活动中。您能告诉我要替换什么吗?替换这个TouliosDB.EisaghFitti(temaxismeno_sms[1]、temaxismeno_sms[2]、temaxismeno_sms[3]、temaxismeno_sms[4]);有以下几点。DatabaseHelper TouliosDB=新的DatabaseHelper(此);TouliosDB.Eisaghfitti(temaxismeno_sms[1]、temaxismeno_sms[2]、temaxismeno_sms[3]、temaxismeno_sms[4]);在IncomingSMSReceiver类中。我得到一个错误“DatabaseHelper中的DatabaseHelper(android.content.Context)不能应用于(toulios.ptixiakh.toulios.IncomingSMSReceiver)”您需要在IncomingSMSReceiver中的OnReceive方法中创建DatabaseHelper对象,而不是在Activity中。您能告诉我要替换什么吗?替换这个TouliosDB.EISAgoghfiti吗(temaxismeno_短信[1]、temaxismeno_短信[2]、temaxismeno_短信[3]、temaxismeno_短信[4]),其中.DatabaseHelper TouliosDB=new DatabaseHelper(this);TouliosDB.eisagoghfititi(temaxismeno_短信[1]、temaxismeno短信[2]、temaxismeno_短信[3]、Temaxismaxemeno_短信[4]);在IncomingSMSReceiver类中。我得到一个错误“DatabaseHelper”(android.content.Context)在DatabaseHelper中不能应用于(toulios.ptixiakh.toulios.IncomingSMSReceiver)“我得到错误不能从静态上下文引用静态方法EisaghFitti(blabla)”在DatabaseHelper中不能应用于(toulios.ptixiakh.toulios.IncomingSMSReceiver)“DatabaseHelper(android.content.Context)”在DatabaseHelper中不能应用于(toulios.ptixiakh.toulios.IncomingSMSReceiver)再次编辑。您需要传递应用程序上下文I get error No static method EisagoghFitti(blabla)无法从静态上下文引用Xi get one error DatabaseHelper中的“DatabaseHelper(android.content.Context)无法应用于(toulios.ptixiakh.toulios.IncomingSMSReceiver)”再次编辑。您需要传递应用程序上下文
package toulios.ptixiakh.toulios;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class sms_server extends AppCompatActivity {
DatabaseHelper TouliosDB=new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sms_server);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    TouliosDB = new DatabaseHelper(this);
    FloatingActionButton fab = (FloatingActionButton)     findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action",   Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_sms_server, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}
DatabseHelper dbHelper = new DatabaseHelper(context.getApplicationContext());