पर एक नज़र डालें।
ऐसा इसलिए है क्योंकि एक बार जब आप "/.*"
स्वीकार करते हैं तो सब कुछ स्वीकार हो जाता है (जिसमें स्लेश शामिल हैं)। और चूंकि हम डेटा टैग प्रदान नहीं कर सकते हैं जिन्हें स्वीकार नहीं किया जा सकता है, केवल एक ही तरीका है कि आप अपनी गतिविधि के अंदर डेटा जांचें। प्रकट अंदर
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri data = getIntent().getData();
Log.d("URI", "Received data: " + data);
String path = data.getPath();
// Match only path "/*" with an optional "/" in the end.
// * to skip forward, backward slashes and spaces
Pattern pattern = Pattern.compile("^/[^\\\\/\\s]+/?$");
Matcher matcher = pattern.matcher(path);
if (!matcher.find()) {
Log.e("URI", "Incorrect data received!");
finish();
return;
}
// After the check we can show the content and do normal stuff
setContentView(R.layout.activity_main);
// Do something when received path data is OK
}
गतिविधि इस प्रकार दिखाई देगा:: यहाँ पूरा करने के लिए कैसे आप क्या कर रहे हैं है
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"
android:host="example.com"
android:pathPattern="/.*"/>
</intent-filter>
</activity>
आप की जाँच करने के अपनी गतिविधि नहीं करना चाहते हैं, तो डेटा सही है आप करेंगे अपनी आवश्यकताओं को बदलना है।
समस्या '*' है जो "बाकी सब कुछ" के लिए वाइल्डकार्ड है। इसे हटाने का प्रयास करें, और देखें कि यह काम करता है या नहीं! – Leonardo
@ लियोनार्डो फेरारी हां, लेकिन वाइल्डकार्ड भी दो या एक से आगे के स्लैश के बीच सभी प्रकार के पात्रों से मेल खाना आवश्यक है। – Mahoni
मुझे खेद है कि इससे मदद नहीं मिलती है, लेकिन यहां एक [रेगेक्स जो आपके अभिवादन के लिए काम करता है] (http://regex101.com/r/rT5rZ5/1)। मुझे नहीं पता कि इससे मदद मिलती है क्योंकि मुझे एंड्रॉइड नहीं पता है। उम्मीद है कि यह थोड़ा और अच्छी किस्मत में मदद करता है! – skamazin