web-dev-qa-db-ja.com

PhoneGapでIMEI番号を取得するにはどうすればよいですか?

PhoneGap Android jQuery、JavaScript、HTMLを使用したモバイルアプリケーションを開発しています。モバイルIMEIを取得したいです。これからこのコードを試しました チュートリアル

私はこのような番号を取得しています:97734a345d234d*#06#を使用してIMEI番号を取得するためにデバイスをチェックしました。それが正しいかどうかはわかりません。

14
Mercy

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();
5
Mohd Noufil

Phonegapプラグインを作成して、IMEI番号を返すことができます。 phonegapはAndroidデバイスのimeiを返さないため、ランダムな64ビットの数値を返します。

これは、phonegapアプリケーションで実際のIMEI番号を取得するための完全なプラグインです(このプラグインは「プラグイン可能」ではないことに注意してください。ただし、指示に従うと機能します。phonegap2.9でテストしました。実際の「」を作成する予定です。 phonegap 3.0のいくつかのデバイス情報を含むplugmanable」プラグイン)。

これがCordovaPluginから拡張されたJavaクラスです(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権限を追加します。

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

この後、deviceinfo.jsファイルをページに追加する必要があります。devicereadyの後に、次のようにプラグインを使用できます。

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

HTMLまたはJavaScriptを介してIMEIにアクセスすることはできません。ただし、IMEIを読み取るアプリを作成することはできます。

getDeviceId() を呼び出すだけです。マニフェストに READ_PHONE_STATE 権限が必要であることを忘れないでください。

4
rekire

これは、IMEIの他のアプリのログを悪用した場合にのみ可能になると思いますが、そうなるかどうかはわかりません。

一部のユーザー、理想的にはシステムアプリを想定すると、ログを読み取り、その情報を解析できます。

頑張って、成功/失敗でポストバック

2
TryTryAgain

あなたが指しているのは PhoneGapチュートリアルバージョン1.0. です。それは非常に古く、多くの情報を含んでいます。たとえば、 PhoneGapのバージョン2.1. のまったく同じページを読むと、 device.uuid Quick Example に対して行われたコメントに気付くでしょう。 、 それ device.uuidIMEI番号を返しますTizenプラットフォームの場合のみ。あなたが言ったように、Androidを含む他のすべてのプラットフォームは何か他のものを返します。

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

2
trejder

Phonegapから "Device"オブジェクトを使用できます。 "device"はウィンドウオブジェクトに割り当てられているため、暗黙的にグローバルスコープに含まれているため、onDeviceReady関数で簡単に呼び出すことができます。

var deviceID = device.uuid

Androidでは、ランダムな64ビット整数が文字列として返されます。整数はデバイスの最初の起動時に生成されます。BlackBerryではPIN =デバイスの番号。これは文字列として9桁の一意の整数であり、iPhoneでは複数のハードウェアIDから作成されたハッシュ値の文字列を返します。すべてのデバイスで一意であることが保証されており、ユーザーアカウントに関連付けることはできません。 。

完全な例を参照してください ここ

0
George Artemiou

このようにして、platforms/Android/src/org/Apache/cordova/device /Device.Javaで定義されているgetUuid関数を変更できます。

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;
}

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

また、追加する必要があります

import Android.content.Context;
import Android.telephony.TelephonyManager;
0
jmhostalet

コルドバ用のcordova-plugin-imeigetterというプラグインを作成しました(Androidデバイスのみ))。これがお役に立てば幸いです。


インストール:

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

使用法:

このプラグインは、getという1つのメソッドでオブジェクトをエクスポートします。

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

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

0
tomloprod