我試圖打一個電話,當一個特定的通知到達, 我使用通知服務監聽器來讀取傳入notificaion,化妝電話時具體通知到達
public void onNotificationPosted(StatusBarNotification sbn) {
// if(if this is my notificaion..){
String name = sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TITLE));
List<String> numbers = getPhoneNumbers(name);
Log.d(TAG, "i have all this numbers - " + numbers.toString());
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + numbers.get(1)));
startActivity(intent);
}
的「getPhoneNumbers」方法這一個
public List<String> getPhoneNumbers(String name) {
List<String> numbers = new ArrayList<String>();
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
"DISPLAY_NAME = '" + name + "'", null, null);
if (cursor.moveToFirst()) {
String contactId =
cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
// Get all phone numbers.
Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
while (phones.moveToNext()) {
String number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
numbers.add(number);
}
phones.close();
}
cursor.close();
return numbers;
}
都做工精細,(我用破發點CHEAK一切......) 的「如果這是我的通知」的工作完美,我從SBN額外獲得名稱,「數字」 arraylist包括所有聯繫人「getPhoneNumbers」方法後使用的數字,但當我開始意圖nathing發生..
我的問題是什麼? :/
我想numbers.get(1)..(這個聯繫人有5個以上的數字,所以我認爲這不是問題...), 和這個解釋不起作用:/ – Didi78
@ Didi78檢查我的編輯,我認爲問題是你無法看到'MainActivity'內'onNotificationPosted' .... –
你說我需要定義myActivity = this;在onNotificationPosted?我認爲這是不可能的,因爲NotificationListenerService不是一個活動.. 或者我可能不理解你呢?我需要在我的MainActivity中定義它? (我有一個..) – Didi78