我正在編寫一個Android應用程序(API級別15對不起,我無法克服這個兼容的原因),應該收到短信並顯示吐司/彈出。 這個應用程序將有設置和/或日誌記錄的標準活動,但傳入的短信應在收到也在後臺。短信接收通知
Googling around我發現了幾個代碼應該工作,因爲我需要,但不幸的是它沒有。
這些都是我在清單文件中添加的條目:
<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="com.bananainc.smsmirror.SMSListener">
<intent-filter android:priority="100">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
,這是我的SMSListener
類:
public class SMSListener extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
{
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null)
try {
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]);
String from = msgs[i].getOriginatingAddress();
String body = msgs[i].getMessageBody();
Toast.makeText(context, "SMS" + from + " : " + body , Toast.LENGTH_SHORT).show();
Log.d("EVENT", "SMS" + from + " : " + body);
}
} catch (Exception e) {
Log.d("Exception caught", e.getMessage());
}
}
}
}
當然,我也得到了代碼管理MainActiity
但是,到現在爲止,這不涉及傳入的SMS管理。
我哪裏失敗了?
請注意SMSListener
代碼似乎不運行。如果我試圖調試它的線程保持'暫停',因爲它從來沒有被觸發。事實上,在logcat
中沒有傾倒日誌行。
我注意到,在logcat中我得到了這樣的警告:
07-05 17:05:35.293 8277-8277/com.bananainc.smsmirror W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
也許是很重要的。
順便說一句我在Windows 10 Home 64位下運行Android Studio 2.1.2
。
主要活動中的註冊廣播接收機 – Shanto
@Shanto thnx ...您的意思只是將' ... '條目移動到MainActivity中,或者通過代碼定義處理程序作爲MainActivity類的內部成員? –
weirdgyn