2011-02-04 46 views
2

我有一个简单的Android应用程序(API 1.5),由Nextel为摩托罗拉i1开发。 它通过BroadcastReveiver创建了一个简单的SMS监听器,当我在MOTODEV android studio附带的i1仿真器上测试它时,它的工作原理是 。Android BroadcastReceiver在MOTODEV模拟器上工作,但不在实际的摩托罗拉i1设备上

当我将它安装在实际的设备上时,什么都没有...... onReceive永远不会被调用。 我可以通过调试跟踪看到这...

我尝试了一些其他接收器即Intent.ACTION_AIRPLANE_MODE_CHANGED ,看看这是一个特定的短信问题,但同样的事情...工作在模拟器不是设备。 我在这里错过了什么?有任何想法吗?

下面是代码:

package com.smsmanager; 

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     registerReceiver(br, new IntentFilter("android.provider.Telephony.SMS_RECEIVED")); 
    } 

    private BroadcastReceiver br = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      Toast.makeText(context, "Hello SMS", Toast.LENGTH_LONG).show(); 

     } 
    }; 

} 

这里是清单:

<?xml version="1.0" encoding="UTF-8"?> 
<manifest android:versionCode="1" android:versionName="1.0" 
    package="com.smsmanager" mlns:android="http://schemas.android.com/apk/res/android"> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 

    <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> 
    </application> 

    <uses-sdk android:minSdkVersion="3" /> 
</manifest> 

我开始认为这可能是由于摩托罗拉所做的更改!?从Nextel的

回答

3

我这解决了与Pragnesh Goyani的帮助...

摩托罗拉I1单元支持 MMS,因为即使对于文本 消息的运输。因此,传入文本 消息不会调用SMS广播 意图。您可能需要使用 “android.provider.Telephony.WAP_PUSH_RECEIVED” 意图。

这里是解决方案:

把下面的代码在你的AndroidManifest.xml。

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

       </intent-filter> 
       <intent-filter> 
        <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" /> 
        <data android:mimeType="application/vnd.wap.mms-message" /> 
       </intent-filter> 
</receiver> 
相关问题