मैंने इसे AccessibilityService
का उपयोग करके किया है। यह केवल एपीआई स्तर> = 16 पर ठीक काम करेगा।
आपको AccessibilityService
का विस्तार करने की आवश्यकता है। उदाहरण के लिए इस कक्षा को यूएसएसडी प्रतिक्रियाओं का पाठ मिलेगा और संवाद को खारिज कर दिया जाएगा।
// ....
public class UssdAccessibilityService extends AccessibilityService {
public UssdAccessibilityService() {
}
@TargetApi(16)
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (!"com.android.phone".equalsIgnoreCase((String)event.getPackageName())){
// In this example we are only interested in events comming
// from "com.android.phone" package
event.recycle();
return;
}
String className = (String)event.getClassName();
if (className == null || (!className.contains("AlertDialog") && !className.contains("AlertDialog"))){
// Class is not an USSD dialog
event.recycle();
return;
}
AccessibilityNodeInfo source = event.getSource();
if (source == null) {
// getSource() is annotated @Nullable, so we do this to be
// safe just in case
event.recycle();
return;
}
AccessibilityNodeInfo acceptButton = null;
String ussdText = null;
int childCount = source.getChildCount();
for (int i = 0; i < childCount; i++){
AccessibilityNodeInfo current = source.getChild(i);
if (current == null)
continue;
String currentText = (String)current.getText();
if (current.isClickable()){
// In the case of USSD dialogs, there is only one clickable.
// May be necessary to do more robust search in other scenarios
acceptButton = current;
continue;
}
ussdText = currentText;
current.recycle();
}
if (ussdText!= null) {
if (acceptButton != null)
acceptButton.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
source.recycle();
event.recycle();
}
// ....
}
आप <application>
<service
android:name=".UssdAccessibilityService"
android:enabled="true"
android:label="Read USSD codes and dismiss"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config" />
</service>
के तहत प्रकट में उपयोग सेवा की घोषणा करनी चाहिए res/xml
के तहत बनाने accessibility_service_config.xml
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:packageNames="com.android.phone,com.ats.android.activationcodebot"
android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
/>
बेशक
आप अपनी जरूरतों के लिए इस कोड अनुकूल करने के लिए किया है।
अंत में आपको एंड्रॉइड में सेटिंग्स> एक्सेसिबिलिटी पर मैन्युअल रूप से एक्सेसिबिलिटी सेवा को सक्षम करना होगा (या उपयोगकर्ता को ऐसा करने के लिए कहें)।
और पढ़ें ...Developing an Accessibility Service
स्रोत
2017-07-26 14:14:56
क्या आप टेक्स्ट पर क्लिक करना चाहते हैं या टेक्स्ट क्लिक करने योग्य टेक्स्ट का हिस्सा बनाना चाहते हैं, या स्क्रीन क्लिक निर्देशांक प्राप्त करें? पूर्व पर जानकारी यहां प्राप्त की जा सकती है: https://www.google.com.ng/url?url=https://stackoverflow.com/questions/10696986/how-to-set-the-part-of-the -टेक्स्ट-दृश्य-है-क्लिक करने योग्य और RCT = जम्मू सा = यू और वेद = 0ahUKEwilotjX6-7UAhXIYlAKHfF8BwgQFggbMAA & q = android + बनाने + पाठ + का भाग + क्लिक करने योग्य और यूएसजी = AFQjCNEVpYcyHrHbO5NKt5jBPVqAjpNiFg –
@ Mofe-hendyEjegi मैं इसे खुद को क्या करने वाले उपयोगकर्ता के बिना पाठ क्लिक करने के लिए चाहते हैं। लेकिन चूंकि यह एक और ऐप पर है, इसलिए मैं इसे क्लिक नहीं कर सकता, यही वह है जिसे मैं समझने की कोशिश कर रहा हूं कि कैसे करना है। – Jayce
अभिगम्यता एपीआई में जांचें कि मैं अधिक जानकारी के लिए सहायता कर सकता हूं https://stackoverflow.com/questions/35842762/how-to-read-window-content-using-accessibilityservice-and-evoking-ui-using-dra – ingsaurabh