2010-08-19 16 views
7

मैं एक ऐप पर काम कर रहा हूं और मैं इसमें Last.fm ऐप को एकीकृत करना चाहता हूं। असल में, जब कोई मेरे ऐप में किसी कलाकार को देख रहा है, तो मैं एक बटन चाहता हूं कि वे कलाकार की जानकारी के साथ Last.fm एप्लिकेशन खोलने के लिए टैप कर सकें।एंड्रॉइड: एक अलग थर्ड पार्टी ऐप के लिए एक गतिविधि शुरू करना

इस आशय काम करता है

, लेकिन यह (ब्राउज़र या Last.fm) एक मेनू पूछने जो एप्लिकेशन मैं उपयोग करना चाहते हैं लोड करता है:

Intent i = new Intent(); 
i.setData(Uri.parse("http://last.fm/music/" + headliner)); 
i.setAction("android.intent.action.VIEW"); 
startActivity(i); 

हालांकि, मैं सिर्फ Last.fm एप्लिकेशन शुरू करने और छोड़ना चाहते उक्त कथन जो एप्लिकेशन का उपयोग करने, मैं शायद का उपयोग कर सोचा setPackage() विधि इस तरह काम करेगा:

i.setPackage("fm.last.android"); 

लेकिन यह दुर्घटना करने के लिए एप्लिकेशन का कारण बनता है:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=http://last.fm/music/Rihanna pkg=fm.last.android } 

क्या यह केवल Last.fm ऐप शुरू करना संभव है? संदर्भ के लिए Here's Last.fm के AndroidManifest.xml की एक प्रति।

पढ़ने के लिए धन्यवाद, टोनी

उत्तर

13

हाँ, यह संभव है, लेकिन आप सही घटक नाम जानना चाहते हैं। Last.fm ऐप को नियमित रूप से लॉन्च करें और cmp = ... के लिए logfile जांचें जो ऐप शुरू होने पर उपयोग किया गया है। इसके बाद अपने ऐप में भी इसका इस्तेमाल करें।

मैं इस तरह एक समस्या के बिना मेरे अनुप्रयोग के भीतर से बाजार से जेड DeviceTest ऐप्स प्रारंभ:

final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");     
intentDeviceTest.setComponent(new ComponentName("zausan.zdevicetest","zausan.zdevicetest.zdevicetest")); 
startActivity(intentDeviceTest); 
मेरे मामले में

जानकारी मैं logcat से ले लिया था:

// Dat = सामग्री: //applications/applications/zausan.zdevicetest/zausan.zdevicetest.zdevicetest

// सीएमपी = zausan.zdevicetest/.zdevicetest

क्रम में पता है कि कैसे सही घटक/वर्ग के साथ अनुप्रयोग शुरू करने के लिए ... last.fm अनुप्रयोग के लिए भी ऐसा ही करने

संपादित करें: मैं से Last.fm लांच करने के लिए परीक्षण किया है मेरी खुद एप्लिकेशन, और यह किसी भी त्रुटि के बिना ठीक काम करता है:

final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");     
intentDeviceTest.setComponent(new ComponentName("fm.last.android","fm.last.android.LastFm")); 
startActivity(intentDeviceTest); 
+0

यह एक हैक है और अनुप्रयोगों कॉल करने के लिए उचित तरीके से विचार नहीं किया। यह सुनिश्चित करने का एक निश्चित तरीका है कि सभी प्रकार की त्रुटियां – Falmarri

+0

दिखाएंगी, क्या आप समझा सकते हैं कि यह एक हैक क्यों है? आप एप लॉन्चर द्वारा ऐप के नियमित इरादे का भी उपयोग कर रहे हैं, यानी जब आप होम स्क्रीन पर ऐप आइकन पर क्लिक करते हैं? वैसे भी, तो उचित तरीका क्या है जिसके बाद आप सुझाव देंगे? –

+0

शायद मैं गलत समझा। यदि आप उस गतिविधि को कॉल कर रहे हैं जिसे लॉन्चर कॉल करता है, तो मुझे लगता है कि यह ठीक होना चाहिए। मैं प्रश्न को एक अलग पैकेज की आंतरिक गतिविधि को कॉल करने के रूप में समझ गया। यह तोड़ने के लिए प्रवण है क्योंकि उस गतिविधि को इरादे के अतिरिक्त की आवश्यकता हो सकती है जो किसी दुर्घटना का कारण बन सकती है, या ऐसा कुछ। कोड को देखे बिना, यह बताना संभव नहीं है कि यह 100% सुरक्षित है – Falmarri

संबंधित मुद्दे