Initial commit.
9
.gitignore
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
/.svn/
|
||||||
|
/bin
|
||||||
|
/gen
|
||||||
|
/proguard
|
||||||
|
/project.properties
|
||||||
|
/.classpath
|
||||||
|
/.project
|
||||||
|
/.pmd
|
||||||
|
|
28
AndroidManifest.xml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="net.thauvin.erik.android.noussd"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0" >
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="8"
|
||||||
|
android:targetSdkVersion="15" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/ic_launcher"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:theme="@android:style/Theme.NoDisplay" >
|
||||||
|
<activity
|
||||||
|
android:name=".NoUSSD"
|
||||||
|
android:label="@string/app_name" >
|
||||||
|
<intent-filter>
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|
||||||
|
<data android:scheme="tel" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
BIN
ic_launcher-web.png
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
libs/android-support-v4.jar
Normal file
BIN
noussd.png
Normal file
After Width: | Height: | Size: 27 KiB |
20
proguard-project.txt
Normal file
|
@ -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 *;
|
||||||
|
#}
|
BIN
res/drawable-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
res/drawable-ldpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
res/drawable-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
res/drawable-xhdpi/ic_action_search.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
res/drawable-xhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
9
res/values/strings.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<string name="app_name">NoUSSD</string>
|
||||||
|
<string name="dialog_title">USSD Warning!!!</string>
|
||||||
|
<string name="dialog_msg">Do you really want to dial:\n\n\t%1$s\n\nIt could potentially harm your device. </string>
|
||||||
|
<string name="dialog_ok">Dial</string>
|
||||||
|
<string name="dialog_cancel">Cancel</string>
|
||||||
|
|
||||||
|
</resources>
|
117
src/net/thauvin/erik/android/noussd/NoUSSD.java
Normal file
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|