您可以通過下面的代碼發送USSD代碼,你也需要添加權限(這應該是棉花糖更新後,運行時間許可)
<uses-permission android:name="android.permission.CALL_PHONE" />
String code = "*" + Uri.encode("#") + 456 + Uri.encode("#");
startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:" + code)));
,您可以通過AccessibilityService
這裏讀USSD代碼是例如:
服務:
public class USSDService extends AccessibilityService {
private static final String TAG = "USSDService";
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.d(TAG, "onAccessibilityEvent");
String text = event.getText().toString();
Log.d(TAG, text);
}
}
@Override
public void onInterrupt() {
}
@Override
protected void onServiceConnected() {
super.onServiceConnected();
Log.d(TAG, "onServiceConnected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.flags = AccessibilityServiceInfo.DEFAULT;
info.packageNames = new String[]{"com.android.phone"};
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
setServiceInfo(info);
}
}
的AndroidManifest.xml:
<service android:name=".services.USSDService"
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/config_service" /> // created below
</service>
RES/XML/config_service.xml:
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackSpoken"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"
android:description="@string/accessibility_description"
android:notificationTimeout="100"
android:packageNames="com.cootf.sims"
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity" />
運行的代碼 - >啓用通過設置可訪問 - >輔助 - > [你的應用名稱] - >啓用。任務完成!
我實際上甚至不知道如果我可以從服務打電話 - 我試圖創建一個ACTION.CALL意圖,並用startActivity()發送它,但這會導致強制關閉,即使我設置了FLAG_ACTIVITY_NEW_TASK標誌。 – Jords 2010-11-20 09:19:20
傻我,只是沒有正確的權限。它實際上是調用USSD代碼 - 但不在後臺。我想如果沒有撥號器顯示它的界面,你就無法進行android調用 - 我將不得不使用web選項。 – Jords 2010-11-20 22:44:14
嗨Jords,我看到這個問題是在2年前問的,所以我希望自那時起事情發生了變化。我正在寫類似的申請(作爲我的文憑的一部分)。你能否幫我完成USSD任務?就像你我需要執行一個USSD調用並獲得結果(如果可能的話,在後臺執行)......如果您在此共享一些工作代碼,我將非常感激。謝謝 – vach 2013-10-30 09:12:13