2012-01-05 18 views
14

jQuery、JavaScript、HTMLを使用してPhoneGap Androidモバイルアプリケーションを開発しています。私はモバイルIMEIを取得したい。私はこのTutorialからこのコードを試しました。PhoneGapでIMEI番号を取得するには?

97734a345d234dのような番号を取得しています。 *#06#を使用してIMEI番号を取得するために端末を確認しました。 正しいかどうかわかりません。

+0

あなたのIMEIを確認するために、それは通常、バッテリーの下に印刷されたか、どこかに隠された(そしてそれが利用できる場合は、このボックスには入って来た)です。 – StackOverflowed

+0

@StackOverflowedあなたが正しく指摘したように、通常は**バッテリーの下**に印刷されていますので、それを読むには、デバイスの電源を切ってバッテリーを取り外す必要があります。 '*#06#'のクイックコードを使用すると、OPに慣れています。デバイスの電源をオフにする必要はありません。 – trejder

+0

@StackOverflowedは、プログラムでバッテリを取り外し、印刷されたIMEIを読むためのコードを提供できる場合に役立ちます。 –

答えて

4

IMEIには、htmlやJavaScriptでアクセスすることはできません。しかし、IMEIを読むアプリを書くことができます。

getDeviceId()と電話してください。マニフェストにREAD_PHONE_STATE権限が必要であることを忘れないでください。

+0

このgetDeviceId()を試しましたが、ネットワークステータスとしてエラーが発生しました1 =参照エラー:変数getDeviceIdを見つけることができません – Mercy

+0

@Priyaリンクされた関数 'getDeviceId()'は文字列を返します。あなたはAndroid Appを書いていますか?また、次の点に注意してください: 'あなたはこのクラスを直接インスタンス化しません。代わりに、Context.getSystemService(Context.TELEPHONY_SERVICE)を通じてインスタンスへの参照を取得します。 – rekire

2

IMEIのログを記録している他のアプリを悪用すれば、これが可能になると思います。

システムアプリケーションを想定すると、ログを読み取り、その情報を解析することができます。

幸運、成功/失敗にポストバック

+0

'getDeviceId()'は、phonegapで動作する場合にも素晴らしいオプションです。 – TryTryAgain

+0

私はこのgetDeviceId()を試しました。ネットワーク状態としてエラーを取得する1 =参照エラー:変数を見つけることができませんgetDeviceId – Mercy

+0

あなたの唯一の賭けは何とか私が上記の答えに記載されている方法を達成することだと思います。 – TryTryAgain

5

DroidGapクラスを拡張し、静的メンバにIMEI番号の値を保存し、あなたがほしいと思うところからこの静的フィールドにアクセスするクラスのIMEI番号を取得します。 ..例コードはここにあります

public class MyApp extends DroidGap 
{ 
    private static String imei; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     super.loadUrl("file:///android_asset/www/index.html"); 
     TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
     imei=tm.getDeviceId(); 
    } 
    static public String getIMEI(){ 
     return imei; 
    } 
} 
// where ever u need imei number use this code 

String imei=MyApp.getIMEI(); 
+0

**華麗な例!私はあなたに+1を与えることができる、ピチー。ありがとう! – trejder

+0

JavaScriptコードでMyAppにアクセスするにはどうすればよいですか? – bschandramohan

+0

@bschandramohan JS経由でネイティブコード(PhoneGap)を呼び出すプラグインを作成する必要があります。このリンクをご覧ください:http://www.tricedesigns.com/2012/03/01/pushing-data-to-a-phonegap- web-view/ –

2

あなたはPhoneGap Tutorial version 1.0.0を指しています。それは非常に古いものであり、多くの情報を提供しています。たとえば、version 2.1.0 of PhoneGapの同じページを読んだ場合、は、Tizenプラットフォームの場合にのみ、IMEI番号を返すと言われているdevice.uuid Quick Exampleのコメントに気付くでしょう。あなたが言及したAndroidを含む他のすべてのプラットフォームは、何か他のものを返します

純粋なHTML/Javascript(PhoneGap Buildでコンパイルされたアプリケーション)でデバイスのIMEIを取得することはできません。それを読むには、Androidプラットフォーム用にのみローカルにビルドし、あなたのために仕事を行うネイティブプラグインを含める必要があります。例えば、this oneのようなものです。

0

Phonekapの「Device」オブジェクトを使用できます。

var deviceID = device.uuid 

それがランダム64を返しAndroid上での点に注意してください。「デバイス」がウィンドウオブジェクトに割り当てられているので、簡単にあなたのonDeviceReady関数などでそれを呼び出すことができますので、それがグローバルスコープに暗黙のうちにありますビット整数を文字列として返します。整数は、デバイスの最初のブート時に生成されます。 BlackBerryでは、デバイスのPIN番号を返します。これは文字列としての9桁の一意の整数であり、iPhoneでは複数のハードウェアIDから作成された一連のハッシュ値を返します。すべてのデバイスで一意であることが保証されており、ユーザーアカウントに結び付けられません。

は、あなたがあなたのIMEI番号を返すようにプラグインのPhoneGapを書くことができhere

4

完全な例を参照してください。 phonegapはAndroidデバイス用のimeiを返さないため、ランダムな64ビットの数値を返します。

これは、phonegapアプリケーションで実際のIMEI番号を取得するための完全なプラグインです(このプラグインは「plugmanable」ではありませんが、指示に従えば、私はphonegap 2.9でテストしました。 phonegap 3.0のためのいくつかのデバイス情報を持つ本当の "プラグマブル"プラグインを書く)。ここで

は、そのためのJavaクラスがCordovaPlugin(DeviceInfo.java)から延びている。

import org.apache.cordova.api.CallbackContext; 
import org.apache.cordova.api.CordovaPlugin; 
import org.json.JSONArray; 

import android.content.Context; 
import android.telephony.TelephonyManager; 
import android.util.Log; 

public class DeviceInfo extends CordovaPlugin { 

    public DeviceInfo(){ 
    } 

    public String DeviceImeiNumber(){ 
     TelephonyManager tManager = (TelephonyManager)cordova.getActivity().getSystemService(Context.TELEPHONY_SERVICE);    
     return tManager.getDeviceId(); 
    } 

    @Override 
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { 
     if (action.equals("imeiNumber")) { 
      callbackContext.success(this.DeviceImeiNumber()); 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 
} 

そして、あなたは反対側(deviceinfo.jsにあなたのプラグインにアクセスできるように、あなたは、jsオブジェクトを必要とします):

(function(cordova) { 

    function DeviceInfo() {} 

    DeviceInfo.prototype.imeiNumber = function(win, fail) { 
     return cordova.exec(
       function (args) { if(win !== undefined) { win(args); } }, 
       function (args) { if(fail !== undefined) { fail(args); } }, 
       "DeviceInfo", "imeiNumber", []); 
    }; 

    if(!window.plugins) { 
     window.plugins = {}; 
    } 

    if (!window.plugins.DeviceInfo) { 
     window.plugins.DeviceInfo = new DeviceInfo(); 
    } 

})(window.cordova); 

はこのように、プロジェクト内のres/XML/config.xmlファイルにプラグインを追加します。

<plugins> 
    <plugin name="DeviceInfo" value="com.XXX.XXXXX.DeviceInfo"/> 
</plugins> 

そして、あなたのAndroidManifest.xml内のREAD_PHONE_STATEパーミッションを追加します。あなたがあなたのページにファイルをdeviceinfo.js、およびdeviceready後にこのようなあなたのプラグインを使用することができます追加する必要があり、この後

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

plugins.DeviceInfo.imeiNumber(function(imei){ 
    console.log("imei "+ imei);     
}); 
+0

は完璧に動作します、ありがとうございます! – Udo

+0

@UD作成、私は助けてうれしい! – lao

0

あなたは、このように

public String getUuid() { 
    //String uuid = Settings.Secure.getString(this.cordova.getActivity().getContentResolver(), android.provider.Settings.Secure.ANDROID_ID); 
    TelephonyManager tManager = (TelephonyManager)this.cordova.getActivity().getSystemService(Context.TELEPHONY_SERVICE); 
    String uuid = tManager.getDeviceId(); 
    return uuid; 
} 
をプラットフォーム/アンドロイド/ SRC /組織/ apacheの/コルドバ/デバイス/ Device.javaで定義されたgetUuid機能を変更することがあり

最初の行にコメントをつけ、2つの新しい行を追加してください。

また、私が何をしたいん(唯一のAndroidデバイスのための)コルドバためcordova-plugin-imeigetterと呼ばれるプラグインを作成している

import android.content.Context; 
import android.telephony.TelephonyManager; 
0

を追加する必要があります。それがあなたを助けることを願っています


インストール:

cordova plugin add https://github.com/tomloprod/cordova-plugin-imeigetter.git 

用途:

このプラグインは、1つのメソッドでオブジェクトをエクスポートget呼ば:

window.plugins.imeiGetter.get(function(imei){ 
    console.log(imei); 
}); 

GitHubの:https://github.com/tomloprod/cordova-plugin-imeigetter

関連する問題