क्षमा करें यदि यह बहुत क्रियात्मक है या बहुत देर हो चुकी है, लेकिन यह एकमात्र तरीका है जिससे मुझे काम मिल सकता है। सबसे जटिल कारक यह तथ्य था कि जावा संदर्भ कार्यों से नहीं गुजरता है, इसलिए प्राप्त करें --- अतिरिक्त तरीकों को वापस करने के लिए एक डिफ़ॉल्ट की आवश्यकता होती है और यह बताने के लिए कि क्या डिफ़ॉल्ट मान संयोग से वापस आ रहा है या नहीं, यह बताने के लिए बूलियन मान को संशोधित नहीं किया जा सकता है, या क्योंकि परिणाम अनुकूल नहीं थे। इस उद्देश्य के लिए, यह एक डिफ़ॉल्ट को वापस करने की तुलना में एक अपवाद को बढ़ाने के लिए विधि के लिए अच्छा होगा।
मैं यहाँ मेरी जानकारी मिली: एंड्रॉयड आशय प्रलेखन ।
//substitute your own intent here
Intent intent = new Intent();
intent.putExtra("first", "hello");
intent.putExtra("second", 1);
intent.putExtra("third", true);
intent.putExtra("fourth", 1.01);
// convert the set to a string array
दस्तावेज़ीकरण सेट करें
String[] anArray = {};
Set<String> extras1 = (Set<String>) intent.getExtras().keySet();
String[] extras = (String[]) extras1.toArray(anArray);
// an arraylist to hold all of the strings
// rather than putting strings in here, you could display them
ArrayList<String> endResult = new ArrayList<String>();
for (int i=0; i<extras.length; i++) {
//try using as a String
String aString = intent.getStringExtra(extras[i]);
// is a string, because the default return value for a non-string is null
if (aString != null) {
endResult.add(extras[i] + " : " + aString);
}
// not a string
else {
// try the next data type, int
int anInt = intent.getIntExtra(extras[i], 0);
// is the default value signifying that either it is not an int or that it happens to be 0
if (anInt == 0) {
// is an int value that happens to be 0, the same as the default value
if (intent.getIntExtra(extras[i], 1) != 1) {
endResult.add(extras[i] + " : " + Integer.toString(anInt));
}
// not an int value
// try double (also works for float)
else {
double aDouble = intent.getDoubleExtra(extras[i], 0.0);
// is the same as the default value, but does not necessarily mean that it is not double
if (aDouble == 0.0) {
// just happens that it was 0.0 and is a double
if (intent.getDoubleExtra(extras[i], 1.0) != 1.0) {
endResult.add(extras[i] + " : " + Double.toString(aDouble));
}
// keep looking...
else {
// lastly check for boolean
boolean aBool = intent.getBooleanExtra(extras[i], false);
// same as default, but not necessarily not a bool (still could be a bool)
if (aBool == false) {
// it is a bool!
if (intent.getBooleanExtra(extras[i], true) != true) {
endResult.add(extras[i] + " : " + Boolean.toString(aBool));
}
else {
//well, the road ends here unless you want to add some more data types
}
}
// it is a bool
else {
endResult.add(extras[i] + " : " + Boolean.toString(aBool));
}
}
}
// is a double
else {
endResult.add(extras[i] + " : " + Double.toString(aDouble));
}
}
}
// is an int value
else {
endResult.add(extras[i] + " : " + Integer.toString(anInt));
}
}
}
// to display at the end
for (int i=0; i<endResult.size(); i++) {
Toast.makeText(this, endResult.get(i), Toast.LENGTH_SHORT).show();
}