2015-03-02 12 views
12

ben adb komutunu yazdığınızda: Ben yazarkenbenim app başlatmak için adb aracılığıyla android derin bağlantı URL'ler sınamak çalışıyorum

Starting: Intent { act=android.intent.action.VIEW dat=example://gizmos pkg=com.myapp } 
Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=example://gizmos flg=0x10000000 pkg=com.myapp } 

Ama:

./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp 

bu hatayı alıyorum adb komut:

./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp.activity.DeepLinkActivity 

Her şey gayet iyi çalışıyor ve ben mesajı almak ve telefonda etkinlik başlatmak görebilirsiniz:

Starting: Intent { act=android.intent.action.VIEW dat=example://gizmos cmp=com.myapp.activity.DeepLinkActivity } 
Status: timeout 
Activity: com.myapp.activity.DrawerActivity 
Complete 

Benim sorum, yalnızca paket adı değil, yalnızca etkinliğimin tam yolunu bulmamın nedeni nedir? Çünkü harici uygulamalar veya tarayıcı derin bağlantıya geçmeye çalıştıklarında uygulamamdaki etkinliği çağırmayacaklar.

Bu

benim AndroidManifest.xml

Aktivitenize tam yolunu belirtmeniz gerekmez
<activity 
     android:name=".activity.DeepLinkActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 

      <data android:scheme="example" 
        android:host="gizmos" /> 

     </intent-filter> 
</activity> 

cevap

26

, ancak yılında URI'dan düzgün tepki olmadığını test etmek istiyorsanız uygulamanız sadece uygulamayı belirtmek paketi:

adb shell am start -a android.intent.action.VIEW -d "example://gizmos" com.myapp 

Ayrıca sağlanan komuta hata var - example://gizmos değil example:gizmos

2
olmalıdır ": // Gizmos örnek" ve "örnek: gizmos"

Alternatif yerine adb kullanmak yerine, android kullanarak derin bağlantı tester uygulamasında doğrudan derin bağlantıları test edebilirsiniz:

diğer cevap belirtildiği gibi

, olması gerektiği

https://play.google.com/store/apps/details?id=com.manoj.dlt

herhangi paket adı veya bileşen adını anma gerek yok. Sadece derin bağlantıyı ve ateşi yazın.

Ben adb aracılığıyla derin bağlantıları test cubersome ve zaman zaman zor olması bulundu ettik. Bu yüzden, bunu yapmak için bu küçük uygulamayı oluşturdum. senin applicationID com.companyname ise 'uygulama Id' ör tarafından: (app Modülü), yanlış bir paket adıyla çalışıyor Yerine com.myapp.activity.DeepLinkActivity Eğer inşa gradle belirtilen tek paket adını yazmak zorunda çünkü

1

hakimiyetin yanlıştır sonra komut şöyle olacaktır:

adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.companyname 
İlgili konular