commit dee97668f54bbd6bb10b368a6ee7d6c69986e4be Author: erik Date: Wed Sep 26 23:57:57 2012 -0700 Initial commit. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..67043e6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +/.svn/ +/bin +/gen +/proguard +/project.properties +/.classpath +/.project +/.pmd + diff --git a/AndroidManifest.xml b/AndroidManifest.xml new file mode 100644 index 0000000..c8eb816 --- /dev/null +++ b/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ic_launcher-web.png b/ic_launcher-web.png new file mode 100644 index 0000000..7667e67 Binary files /dev/null and b/ic_launcher-web.png differ diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar new file mode 100644 index 0000000..feaf44f Binary files /dev/null and b/libs/android-support-v4.jar differ diff --git a/noussd.png b/noussd.png new file mode 100644 index 0000000..675b7fd Binary files /dev/null and b/noussd.png differ diff --git a/proguard-project.txt b/proguard-project.txt new file mode 100644 index 0000000..f2fe155 --- /dev/null +++ b/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000..28839e4 Binary files /dev/null and b/res/drawable-hdpi/ic_launcher.png differ diff --git a/res/drawable-ldpi/ic_launcher.png b/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000..c057585 Binary files /dev/null and b/res/drawable-ldpi/ic_launcher.png differ diff --git a/res/drawable-mdpi/ic_launcher.png b/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000..0c7891c Binary files /dev/null and b/res/drawable-mdpi/ic_launcher.png differ diff --git a/res/drawable-xhdpi/ic_action_search.png b/res/drawable-xhdpi/ic_action_search.png new file mode 100644 index 0000000..d699c6b Binary files /dev/null and b/res/drawable-xhdpi/ic_action_search.png differ diff --git a/res/drawable-xhdpi/ic_launcher.png b/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000..26348f3 Binary files /dev/null and b/res/drawable-xhdpi/ic_launcher.png differ diff --git a/res/values/strings.xml b/res/values/strings.xml new file mode 100644 index 0000000..2750f37 --- /dev/null +++ b/res/values/strings.xml @@ -0,0 +1,9 @@ + + + NoUSSD + USSD Warning!!! + Do you really want to dial:\n\n\t%1$s\n\nIt could potentially harm your device. + Dial + Cancel + + \ No newline at end of file diff --git a/src/net/thauvin/erik/android/noussd/NoUSSD.java b/src/net/thauvin/erik/android/noussd/NoUSSD.java new file mode 100644 index 0000000..0a85a83 --- /dev/null +++ b/src/net/thauvin/erik/android/noussd/NoUSSD.java @@ -0,0 +1,117 @@ +/* + * @(#)NoUSSD.java + * + * Copyright (c) 2012 Erik C. Thauvin (http://erik.thauvin.net/) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the authors nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +package net.thauvin.erik.android.noussd; + +import android.net.Uri; +import android.os.Bundle; +import android.util.Log; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ActivityNotFoundException; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; +import android.content.Intent; +import net.thauvin.erik.android.noussd.R; + +public class NoUSSD extends Activity +{ + private String appName; + + @Override + public void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + + appName = getApplicationContext().getResources().getString(R.string.app_name); + + final Intent intent = getIntent(); + final Uri data = intent.getData(); + + if (data != null) + { + final String uri = intent.getDataString(); + + if ((uri.indexOf("%23") != -1) || (uri.indexOf('#') != -1) || (uri.indexOf('*') != -1)) + { + final AlertDialog.Builder alert = new AlertDialog.Builder(this); + + alert.setTitle(R.string.dialog_title); + alert.setIcon(R.drawable.ic_launcher); + alert.setMessage(getString(R.string.dialog_msg, Uri.decode(data.getSchemeSpecificPart()))); + alert.setPositiveButton(R.string.dialog_ok, new OnClickListener() + { + public void onClick(DialogInterface dialog, int which) + { + dial(data); + NoUSSD.this.finish(); + } + }); + alert.setNegativeButton(R.string.dialog_cancel, new OnClickListener() + { + public void onClick(DialogInterface dialog, int which) + { + dialog.cancel(); + NoUSSD.this.finish(); + } + }); + + alert.show(); + } + else + { + dial(data); + finish(); + } + } + else + { + finish(); + } + } + + private void dial(Uri callData) + { + try + { + Intent callIntent = new Intent(Intent.ACTION_DIAL); + callIntent.setData(callData); + startActivity(callIntent); + } + catch (ActivityNotFoundException e) + { + Log.e(this.appName, e.getLocalizedMessage()); + } + } +}