gpt4 book ai didi

java - 上下文不能应用于类

转载 作者:行者123 更新时间:2023-12-02 03:55:49 32 4
gpt4 key购买 nike

我总共有三个带有名称的java文件主要 Activity 类,传入短信类,DB管理类

IncomingSMS.java 接收传入短信并更新收件箱。 DBManagement.java 有一些方法,例如(创建、编辑、更新数据库等)。

我想使用 DBManagement.java 类创建一个数据库,并将所有传入的短信详细信息添加到该数据库中。

问题是这样的,当我使用 DBManagement dbManagement = new DBManagement(this); 将 DBManagement 类的实例放入 IncomingSMs 类中时出现上下文问题并且通知上下文无法应用于(com.example.zohaib.ultimatesmsblocker.IncomingSMS.java)。

请帮我解决这个问题。

IncomingSMS.java

public void onReceive(Context context, Intent intent) {

SmsManager smsManager = SmsManager.getDefault(); // get object and subscription id of SmsManager
Bundle bundle = intent.getExtras(); //Retrieve data from intent activity(sms data) and save to bundle
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus"); //get pdus messages from bundle, cast it to an Object[]
//messageString = "";
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); //create message from pdu object
String phoneNumber = currentMessage.getOriginatingAddress(); // get sender phone number
String messageBody = currentMessage.getMessageBody(); // get message text
DBManagement dbManagement = new DBManagement(this);

数据库管理.java

package com.example.zohaib.ultimatesmsblocker;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;

public class DBManagement extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "products.db";
private static final String TABLE_NAME = "products";
private static final String COLUMN_ID = "id";
private static final String COLUMN_PRODUCTNAME = "productName";


public DBManagement(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, PRODUCTNAME TEXT)");
Log.d("Create Database:", "Successful");
} catch (Exception e) {
Log.d("Create Database:", "not");
}

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}

//add new product on a table row
public boolean insertData(String product) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_PRODUCTNAME, product);
db.insert(TABLE_NAME, null, contentValues);
return true;
}

public Cursor getAllData() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return res;
}
}

AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.zohaib.ultimatesmsblocker">

<!-- Give permission to read, receive, send sms -->
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<receiver android:name=".IncomingSms">
<intent-filter android:priority="10000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

<activity
android:name=".conversation"
android:label="@string/title_activity_conversation"
android:theme="@style/AppTheme.NoActionBar"></activity>
</application>

</manifest>

我想接收传入的短信并将其保存到我自己创建的数据库中。

最佳答案

传递您在接收方法中获得的上下文。

DBManagement dnmanagement=new   DBManagement(context);                                

关于java - 上下文不能应用于类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465982/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com