-
-
Save Boggartfly/4d27f2e9bef13246111f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.username.ussd; | |
import android.app.Service; | |
import android.content.Intent; | |
import android.content.SharedPreferences; | |
import android.os.IBinder; | |
import android.os.RemoteException; | |
import android.preference.PreferenceManager; | |
import android.util.Log; | |
import com.android.internal.telephony.IExtendedNetworkService; | |
import com.username.ussd.R; // your package name | |
/** | |
* Service implements IExtendedNetworkService interface. | |
* Service must have name "com.android.ussd.IExtendedNetworkService" of the intent declared | |
* in the Android manifest file so com.android.phone.PhoneUtils class bind | |
* to this service after system rebooted. | |
* Please note service is loaded after system reboot! | |
*/ | |
public class USSDNetworkService extends Service { | |
public static final String TAG = "USSDNetworkService"; | |
public static CharSequence mRetVal = null; | |
private static boolean mActive = true; // if active, hide messages | |
private boolean change = false; // if mActive was changed while ussd was running, still hide result of this ussd | |
private String msgUssdRunning = null; | |
public static void setActive(boolean active) { | |
mActive = active; | |
} | |
private final IExtendedNetworkService.Stub mBinder = new IExtendedNetworkService.Stub() { | |
@Override | |
public void setMmiString(String number) throws RemoteException { | |
Log.d(TAG, "setMmiString: " + number); | |
change = !mActive; | |
} | |
@Override | |
public CharSequence getMmiRunningText() throws RemoteException { | |
return msgUssdRunning; | |
} | |
@Override | |
public CharSequence getUserMessage(CharSequence text) | |
throws RemoteException { | |
Log.d(TAG,text.toString()); | |
if(!mActive||change) { | |
mRetVal = text; | |
change = false; | |
return null; | |
} | |
else return text; | |
} | |
@Override | |
public void clearMmiString() throws RemoteException { | |
Log.d(TAG,"clearMmiString"); | |
} | |
}; | |
/** | |
* Put stamp to the App SharedPreferences when PhoneUtils bind to the service | |
* after Android has rebooted. Without reboot phone application does not bind to this service! | |
*/ | |
@Override | |
public IBinder onBind(Intent intent) { | |
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); | |
SharedPreferences.Editor editor = sp.edit(); | |
editor.putBoolean(TAG, true); | |
editor.commit(); | |
msgUssdRunning = getString(R.string.ussd_running_text); | |
return mBinder; | |
} | |
public IBinder asBinder() { | |
return mBinder; | |
} | |
@Override | |
public boolean onUnbind(Intent intent) { | |
return super.onUnbind(intent); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment