2016-04-23 1 views
1

SMS受信時にデータベースにインポートするコードがあります。 私の問題は、私はこのような何かを呼び出したい放送受信機クラス 内のデータベースのメソッドを呼び出す方法を知っていないということです:私はコメントのようにそれを得た TouliosDB.eisagoghfititi(temaxismeno_sms[1],temaxismeno_sms[2],temaxismeno_sms[3],temaxismeno_sms[4]);ブロードキャストSMSレシーバ内のデータベースメソッドの使用方法

!私は、私はアンドロイドのスタジオを使用しています、それはいくつかのために愚かなと簡単です知っているが、Javaに新しいイム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(); 
         } 
      }} 
     } 
    } 
} 
} 

sms_server.java

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); 
} 
} 
+0

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

を交換してくださいあなたは活動していないonRecieve方法でIncomingSMSReceiverでDatabaseHelperオブジェクトを作成する必要があります。 –

+0

何を交換するか教えていただけますか? – Fmetal

+0

これを置き換えるTouliosDB.eisagoghfititi(temaxismeno_sms [1]、temaxismeno_sms [2]、temaxismeno_sms [3]、temaxismeno_sms [4]); DatabaseHelper TouliosDB =新しいDatabaseHelper(これ); TouliosDB.eisagoghfititi(temaxismeno_sms [1]、temaxismeno_sms [2]、temaxismeno_sms [3]、temaxismeno_sms [4]); IncomingSMSReceiverクラスの –

答えて

0

私は本当にあなたの問題を理解していません。クラスDatabaseHelperからあなたのメソッドを呼び出してください。

DatabseHelper dbHelper = new DatabaseHelper(context.getApplicationContext()); 

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

+0

エラーが発生静的メソッドはありませんeisagoghfititi(blabla)は静的コンテキストから参照できません – Fmetal

+0

"DatabaseHelper(android.content.Context)をDatabaseHelperに適用できません(toulios.ptixiakh.toulios.IncomingSMSReceiver)" – Fmetal

+0

もう一度編集します。アプリケーションコンテキストを渡す必要があります –

関連する問題