Android 无法实例化错误?
这是我的源代码Android 无法实例化错误?,android,sms,broadcastreceiver,Android,Sms,Broadcastreceiver,这是我的源代码 public class MainActivity extends Activity { private static String content; private static String phone; private String number; private String message; private BroadcastReceiver receiver = new BroadcastReceiver(){ @Override
public class MainActivity extends Activity {
private static String content;
private static String phone;
private String number;
private String message;
private BroadcastReceiver receiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null)
{
number = "";
message = "";
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
number = msgs[i].getOriginatingAddress();
message = msgs[i].getMessageBody();
}
//---display the new SMS message---
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
SendMe();
}
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
registerReceiver(receiver, filter);
setContentView(R.layout.main);
}
public void SendMe(){
PendingIntent pi = PendingIntent.getActivity(this, 0,
new Intent(this, MainActivity.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(number, null, message, pi, null);
}
}
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.ftt.autospond.MainActivity">
<intent-filter>
<action android:name=
"android.provider.Telephony.SMS_RECEIVED" />
公共类MainActivity扩展活动{
私有静态字符串内容;
专用静态串电话;
私有字符串编号;
私有字符串消息;
private BroadcastReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
//---获取传入的SMS消息---
Bundle=intent.getExtras();
SmsMessage[]msgs=null;
if(bundle!=null)
{
数字=”;
message=“”;
//---检索收到的SMS消息---
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];
对于(int i=0;i在setContentView(R.layout.main)之后注册接收者;确保您的活动已注册到androidmanefest.xml文件中
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.ftt.autospond.MainActivity">
<intent-filter>
<action android:name=
"android.provider.Telephony.SMS_RECEIVED" />
编辑:你不能让你的接收者在你的清单中这样一个预先存在的类中注册。如果你在你的类中动态注册,那么就没有必要在你的清单中注册它…把那个接收者拉出来,看看是否能解决它我已经添加了这个。我在上面的编辑中发布了我的清单,所以你们可以看到..也许我有一个pr这里有个问题。你不能让你的接收者像那样在你的清单中注册。如果你在你的类中动态注册,那么就没有必要在你的清单中注册它……把那个接收者拉出来,看看这能不能解决问题it@Mutmatt没错!但唯一的问题是..在广播接收器内部没有发生任何事情当收到文本时,将不显示祝酒词。这就好像它没有意识到它已收到文本一样。IntentFilter filter=new IntentFilter();filter.setAction(“android.provider.Telephony.SMS_received”);registerReceiver(receiver,filter)
应该注意it@Mutmatt您的意思是filter.addAction吗?因为它没有显示清单xml中的setActionwhat is“”。它是否存在,如果存在,则它是否扩展了BroadcastReceiver。如果您没有使用此接收器,请从xml中删除该项,您的错误应该消失。
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.ftt.autospond.MainActivity">
<intent-filter>
<action android:name=
"android.provider.Telephony.SMS_RECEIVED" />