2013-11-26 8 views
14

, bu tüm bildirimleri temizler giren bu bir kısa mesaj gönderecekAndroid'in "servis çağrısı" kabuk komutunda bilgi nerede bulunur? <code>adb shell</code> veya cihazda bir terminal emülatörü kullanarak

service call notification 1 

(su gerektirir) (gerektirmez su)

service call isms 5 s16 "PhoneNumber" i32 0 i32 0 s16 "BodyText" 

can service call hakkında daha fazla bilgi edinin? this question'u buldum ve her şeyin ne anlama geldiğiyle ilgili olarak cevabın değerini anladım. Ama nerede notification 2 aramayı denemek için hangi yöntem hakkında bilgi bulabilirim? (

Usage: service [-h|-?] 
     service list 
     service check SERVICE 
     service call SERVICE CODE [i32 INT | s16 STR] ... 
Options: 
    i32: Write the integer INT into the send parcel. 
    s16: Write the UTF-16 string STR into the send parcel. 

Ben service list koştum ve bir ad gibi görünüyor ne yazdırır benim cihaz için 78 hizmet isms ve notification dahil olan ve çoğu hizmetler için geri geldi:

Running service call tamamlanmadığını ve bu kullanım baskılı isms için com.android.internal.telephony.ISms ve notification için android.app.INotificationManager). Bu hizmetlerin her biriyle neler yapabileceğimi öğrenmek için bu bilgileri nasıl kullanabilirim?

+0

ayrıca, http://android.stackexchange.com/q/57778/1302 –

+0

da sordu, bana göre. Hangi toplumun soruma cevap verebileceğinden emin değildim. Bence her iki toplum da bundan faydalanabilir. –

cevap

7

İlk cevabım bu yüzden sizin için yararlı olacağını umuyorum.

Bu küçük bilmeceyi açıklamak için android 4.3.1 kullanmama izin verin. Durumunuzda This bağlantısı gerekli olabilir. 669. satır java kodunu aşağı kaydırın Orada kesinlikle com.android.internal.telephony.ISms hizmet ve daha neler yapabileceğini muhtemelen cevap ilişkin Eğer İŞLEM bloğu bekliyor.

Sizin durumunuzda TRANSACTION_sendText'i çağırıyorsunuz. Açıklama,

Kodunun son kısmı "4" rakamını içermektedir. Her bir TRANSACTION numarası + 1 = uygun olanı. service call isms 5sendMultipartText için sendText değil sorumludur nedeni budur.

aynı kural tüm hizmetler için geçerlidir.

Şimdi TRANSACTIONs için bildirim hizmetini nasıl kontrol edeceğinizi öğrendiğinizden eminim. Iyi eğlenceler.

+1

Bağladığınız java dosyası resmi kaynak kod ağacının bir parçası değil. https://android.googlesource.com/platform/frameworks/base/+/android-4.3.1_r1/telephony/java/com/android/internal/telephony/ISms.aidl - O AIDL dosyadan oluşturulan ediliyor. Ben o noktayı eksik @AlexP daha kolay çok –

+0

ayrıştırmak için bulmak - bilgiler derlenmiş dosyanın * de * şudur yapmak gerekir. Kaynak AIDL dosyası, derlendiğinde oluşturuldukları için hiç işlem numarasına sahip değildir. –

+0

@GlennMaynard, hiçbir şey kaçırmıyorum.Çizgileri bir metin dosyasında kendimi sayabileceğimden çok daha fazlasıyım - bu, AIDL derleme sürecinin bir kısmının ilgili (işlem numarasını bulmak için) kısmı. –

9

İşte gönderiim Calling Android services from ADB shell hakkında. Özel aygıtım için uygun bir hizmet kaynak kodu sürümünü otomatik olarak indirmek için kullandığım küçük bir bash komut dosyası içerir ve ardından tüm yöntemler için işlem kodlarını bulmak üzere ayrıştırır.

+1

Bu gerçekten cevap! Çok kötü, senaryonuzu bulmak 2 yılımı aldı! Başkalarının bilmesi için, her servis çağrısı büyük ölçüde AOS/API'ye bağlıdır, çağrı numarası ne kadar düşükse, AOS sürümleri arasında uyumlu olması daha olasıdır. Daha yüksek numaralar için, örneğin 'servis çağrısı telefonu 87 i32 0 i32 1' (şebekeyi yalnızca 2G GSM kullanacak şekilde ayarlamak için), diğer tüm cihazlarda amaçlanandan daha büyük başarısız olacaktır. – not2qubit

İlgili konular