2012-01-05 25 views
14

Tôi đang phát triển một ứng dụng di động Android PhoneGap bằng cách sử dụng jQuery, JavaScript và HTML. Tôi muốn lấy IMEI di động. Tôi đã thử mã này từ số Tutorial này.Cách nhận số IMEI trong PhoneGap?

Tôi nhận được số như sau: 97734a345d234d. Tôi đã kiểm tra thiết bị của mình để nhận số IMEI bằng cách sử dụng *#06#. Tôi không biết nó có đúng hay không.

+0

Để xác nhận IMEI của bạn, nó thường được in dưới pin hoặc ở một nơi ẩn (và trên hộp nó bước vào nếu đó là có sẵn). – StackOverflowed

+0

@StackOverflowed Như bạn đã chỉ ra một cách chính xác, nó thường được in ** dưới ** pin, do đó, để đọc nó, nó là cần thiết để tắt thiết bị và tháo pin. Sử dụng '* # 06 #' mã nhanh, được đo bằng OP là cách, cách nhanh hơn và dễ dàng hơn. Không yêu cầu tắt nguồn thiết bị. – trejder

+0

@StackOverflowed sẽ cực kỳ hữu ích nếu bạn có thể cung cấp một số mã để loại bỏ lập trình pin và đọc IMEI được in. –

Trả lời

4

Bạn không thể truy cập IMEI qua html hoặc JavaScript. Nhưng bạn có thể viết một ứng dụng đọc IMEI cho bạn.

Chỉ cần gọi getDeviceId(). Đừng quên rằng bạn cần sự cho phép READ_PHONE_STATE trong tệp kê khai của bạn.

+0

Tôi đã thử phương thức getDeviceId() .Nhưng tôi nhận được lỗi là trạng thái mạng 1 = Lỗi tham chiếu: không thể tìm thấy biến getDeviceId – Mercy

+0

@Priya Hàm liên kết 'getDeviceId()' trả về một chuỗi. Bạn đã viết một ứng dụng Android? Cũng lưu ý điều này: 'Bạn không khởi tạo trực tiếp lớp này; thay vào đó, bạn lấy một tham chiếu đến một cá thể thông qua Context.getSystemService (Context.TELEPHONY_SERVICE) .' – rekire

2

Tôi tin rằng điều này chỉ có thể xảy ra nếu bạn khai thác một số ứng dụng khác đăng nhập IMEI và tôi không chắc chắn liệu có bất kỳ việc gì không.

Giả sử một số lý do, lý tưởng là một ứng dụng hệ thống, bạn có thể đọc nhật ký và phân tích chúng để biết thông tin đó.

Chúc may mắn, gửi trở lại với những thành công/thất bại

+0

'getDeviceId()' cũng là một lựa chọn tuyệt vời, nếu nó làm việc với phonegap – TryTryAgain

+0

Tôi đã thử phương thức getDeviceId này(). nhận được lỗi như tình trạng mạng 1 = Lỗi tham khảo: không thể tìm thấy một biến getDeviceId – Mercy

+0

Sau đó, tôi nghĩ rằng đặt cược duy nhất của bạn là bằng cách nào đó đạt được nó như thế nào tôi mô tả trong câu trả lời của tôi ở trên. – TryTryAgain

5

Fetch số IMEI trong lớp mà mở rộng lớp DroidGap và lưu giá trị của số imei trong thành viên tĩnh và sau đó truy cập vào lĩnh vực tĩnh này từ nơi nào bạn muốn. .. mã ví dụ ở đây

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

** Ví dụ tuyệt vời **! Pitty, rằng tôi có thể cung cấp cho bạn chỉ +1. Cảm ơn! – trejder

+0

Làm cách nào để truy cập MyApp trong mã javascript của tôi? – bschandramohan

+0

@bschandramohan bạn cần tạo một plugin gọi một số mã gốc (PhoneGap) qua JS, xem liên kết này: http://www.tricedesigns.com/2012/03/01/pushing-data-to-a-phonegap- web-view/ –

2

Bạn đang trỏ đến PhoneGap Tutorial version 1.0.0. Nó là rất cũ và nó lacs rất nhiều thông tin. Ví dụ: nếu bạn đọc cùng một trang cho version 2.1.0 of PhoneGap, bạn sẽ nhận thấy một nhận xét được thực hiện cho device.uuid Quick Example, ở đó người ta nói rằng device.uuid trả về số IMEI chỉ trong trường hợp nền tảng Tizen. Tất cả các nền tảng khác, bao gồm Android, bạn đã đề cập, không trả lại một cái gì đó khác.

Bạn không thể tải IMEI của thiết bị ở dạng HTML/Javascript thuần túy (ứng dụng được biên dịch qua PhoneGap Build). Để đọc nó, bạn phải xây dựng cục bộ, chỉ dành cho nền tảng Android và bao gồm một số plugin gốc sẽ thực hiện công việc cho bạn - ví dụ: this one.

0

Bạn có thể sử dụng đối tượng "Thiết bị" "Thiết bị" từ Phonegap. Kể từ "thiết bị" được gán cho các đối tượng cửa sổ, nó là ngầm trong phạm vi toàn cầu, do đó bạn có thể dễ dàng gọi nó là chức năng onDeviceReady của bạn ví dụ:

var deviceID = device.uuid 

Xin lưu ý rằng trên Android nó trả về một ngẫu nhiên 64 số nguyên bit dưới dạng chuỗi. Số nguyên được tạo trên khởi động đầu tiên của thiết bị. Trên BlackBerry, nó trả về số PIN của thiết bị. Đây là một số nguyên duy nhất có chín chữ số như một chuỗi và trên iPhone nó trả về một chuỗi các giá trị băm được tạo từ nhiều phần cứng xác định. Nó được đảm bảo là duy nhất cho mọi thiết bị và không thể gắn với tài khoản người dùng.

Xem toàn bộ ví dụ here

4

Bạn có thể viết một plugin PhoneGap để trả lại cho bạn số IMEI. Khi phonegap không trả về imei cho các thiết bị Android, nó trả về một số 64 bit ngẫu nhiên.Dưới đây là một plugin hoàn chỉnh để có được số IMEI thực trong một ứng dụng phonegap (xin lưu ý rằng plugin này không phải là "plugmanable" nhưng nếu làm theo hướng dẫn nó sẽ hoạt động. Tôi đã thử nghiệm trên phonegap 2.9. viết một plugin "plugmanable" thực sự với một vài thông tin thiết bị cho phonegap 3.0).

Đây là lớp java cho rằng kéo dài từ 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; 
     } 
    } 
} 

Và sau đó bạn cần một đối tượng js để bạn có thể truy cập vào plugin của bạn ở phía bên kia (deviceinfo.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); 

Thêm plugin của bạn trên res/xml/file config.xml trong dự án của bạn như thế này:

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

Và thêm sự cho phép READ_PHONE_STATE bên trong AndroidManifest.xml của bạn:

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

Sau này bạn cần phải thêm bạn deviceinfo.js nộp vào trang của bạn, và sau khi deviceready bạn có thể sử dụng plugin của bạn như thế này:

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

hoạt động hoàn hảo, cảm ơn bạn !! – Udo

+0

@UDcreate, tôi rất vui được trợ giúp! – lao

0

Bạn có thể thay đổi getUuid chức năng được xác định trong các nền tảng/android/src/org/apache/cordova/thiết bị/Device.java theo cách này

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

chỉ cần nhận xét dòng đầu tiên và thêm hai dòng mới.

Bạn cũng cần phải thêm

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

Tôi đã tạo ra một plugin gọi cordova-plugin-imeigetter cho cordova (chỉ dành cho các thiết bị Android) mà những gì bạn muốn. Tôi hy vọng nó sẽ giúp bạn.


Cài đặt:

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

Cách sử dụng:

Plugin này xuất khẩu một đối tượng với một phương pháp gọi là get:

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

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