तो मैं अपने ऐप में यूआरएल कहने के लिए कोशिश कर रहा हूं, लेकिन इसके बाद यह खुलता है, यह हमेशा null
लगता है कि मैं क्या चाहता हूं कर।एंड्रॉइड यूआरएल योजना: intent.getData() == शून्य (फोनगैप)
<activity android:name="myapp" android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<data android:scheme="myapp" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
और यहाँ मेरी जावा है::
यहाँ मेरी प्रकट की प्रासंगिक हिस्सा है
@Override
public void onStart() {
super.onStart();
final Intent intent = getIntent();
Uri url = intent.getData();
Log.e("myLog", "Url = " + url);
}
लॉग outputting है "आशय = अशक्त", और मैं कोई त्रुटि है।
मैं जावा डेवलपर नहीं हूं इसलिए मुझे एक साधारण समस्या हो सकती है जिसे मैं पहचान नहीं पा रहा हूं। मैं इसे sendJavascript
के साथ अपने फोनगैप ऐप में पास करने जा रहा हूं लेकिन फ़ोनगैप ऐप होने के कारण इस मुद्दे से प्रासंगिक नहीं लगता है।
संपादित करें:
मैं केवल प्रथम <intent-filter>
हो रही है जब मैं intent
लॉग इन करने लगते हैं। यहाँ लॉग है:
03-13 12:36:18.593: E/MyAppLog(13793): Intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.wd.myapp/.myapp (has extras) }
समाधान:
कैसे अपने PhoneGap एप्लिकेशन खोलने के लिए यूआरएल योजनाओं को लागू करने के लिए, और उनमें से कोई बहुत मजबूत किया जा रहा है या बिल्कुल भी काम कर रहा पर पदों के दर्जनों के माध्यम से डालने का कार्य करने के बाद, मैं अपना पूरा समाधान पोस्ट करने जा रहा हूं और उम्मीद करता हूं कि किसी को यह उपयोगी लगेगा।
चरण एक: AndroidManifest.xml - यह <intent-filter>
अपने <activity>
पर जोड़ें, जो भी आप चाहें 'urlScheme' को बदलना। इस मामले में, आप urlScheme: ///? Key = val के लिंक पर क्लिक कर सकते हैं और यह ऐप खोल देगा।
<intent-filter>
<data android:scheme="urlScheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
चरण दो: myApp.java - निम्नलिखित जोड़े onCreate
नीचे। यदि आप singleTask
का उपयोग कर रहे हैं, तो फ़ंक्शन (onCreate
में, जैसा कि अन्य ने तुरही की है) में intent
तर्क डालना सुनिश्चित करें, क्योंकि इससे आप अपने ऐप में लिंक कर सकते हैं चाहे वह पहले से चल रहा है या नहीं।
@Override
public void onStart() {
super.onStart();
final Intent intent = getIntent();
String url = intent.getDataString();
if(url != "" && url != null) {
super.sendJavascript("setTimeout(function() { handleOpenURL('" + url + "'); },1);");
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent); setIntent(intent);
}
onNewIntent
ओवरराइड के लिए स्पष्टीकरण स्वीकार किए जाते हैं उत्तर देखें।
मुझे लगता है कि अंतिम इरादा इरादा = getIntent(); अंतिम इरादा इरादा होना चाहिए = intent.getIntent(); –
कैसा है? 'इरादा' अभी तक मौजूद नहीं है। हालांकि मैं कोशिश करूँगा। – bearfriend
हाँ, यह एक विधि नहीं है। मेरा मानना है कि मैंने 'इरादा' लॉग इन किया है और इससे कुछ मिला है। यह डेटा से बाहर निकलने के लिए बस कॉलिंग विधियों को हमेशा शून्य है। – bearfriend