Dear library what do you recommend to get the imei of my android device, or any unique identifier of the device?
@sonichel===
see here : https://developer.android.com/reference/android/telephony/TelephonyManager#getImei(int)
Thx akenaton. I am new in processing and I am learning to program, regarding the link that you sent me that library should use to obtain the imei?
String IMEI;
void start(){
IMEI = getImei ();
println(IMEI);
}
@sonichel===
not so simple ! - You have to import TelephonyManager for that : code snippet below
import android.os.Build;
import android.content.Context;
import android.telephony.TelephonyManager;
Context ctx;
public String IME="";
public String SN="";
void setup(){
size(800,600);
background(255,0,0);
ctx = this.getActivity().getApplicationContext();
IME= getIme();
}
void draw(){
background(255,0,0);
textSize(18);
text("IME=====" + IME, 100,200);
text ("SERIAL NUMBER====="+ SN, 100,500);
}
public String getIme(){
TelephonyManager tm;
tm=(TelephonyManager)this.getActivity().getSystemService(ctx.TELEPHONY_SERVICE);
//String imei = tm.getImei();///FOR DEVICES >>26//uncomment if your device is in this case
SN = Build.SERIAL;///for all devices
String IM=tm.getDeviceId(); ////for devices <<26,now deprecated; comment if your OS device is more recent
return IM;
}
@sonichel===
deprecated for >=oreo: in this case use Build.getSerial()
Yet this code has to work (as for the other warning you can get easily rid of it creating some static method)
@sonichel===
add “READ_PHONE_STATE” permission to your sketch on runtime
@sonichel===
- we cannot read your error, dont put a picture, cut & copy
- yet probably this error is fired because you dont ak the permission on runtime: after Mashmallow “pernicious” permissions cannot be set only adding them to the Manifest.
@sonichel==== dont change the code, the error you get now is another one!!!
ok, I went back to how I should be … I enabled the permission “READ_PHONE_STATE” and in ctx.TELEPHONY_SERVICE appears "The static field Context.TELEPHONY_SERVICE should be accessed in a static way… and on line 30 String IM = tm.getDeviceId (); it indicates me “The method getDeviceId() from the type TelephonyManager is deprecated”.
when compiling I throw the following:
Build folder: /var/folders/_c/z2br0db57y560_mkrc58_d100000gn/T/android1206249006627969043sketch
:app:preBuild UP-TO-DATE
:app:preDebugBuild
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:checkDebugManifest
:app:generateDebugBuildConfig
:app:prepareLintJar
:app:generateDebugResValues
:app:generateDebugResources
:app:mergeDebugResources
:app:createDebugCompatibleScreenManifests
:app:processDebugManifest
:app:splitsDiscoveryTaskDebug
:app:processDebugResources
:app:generateDebugSources
:app:javaPreCompileDebug
:app:compileDebugJavaWithJavac
:app:compileDebugNdk NO-SOURCE
:app:compileDebugSources
:app:mergeDebugShaders
:app:compileDebugShaders
:app:generateDebugAssets
:app:mergeDebugAssets
:app:extractTryWithResourcesSupportJarDebug
:app:transformClassesWithStackFramesFixerForDebug
:app:transformClassesWithDesugarForDebug
:app:transformClassesWithDexBuilderForDebug
:app:transformDexArchiveWithExternalLibsDexMergerForDebug
:app:transformDexArchiveWithDexMergerForDebug
:app:mergeDebugJniLibFolders
:app:transformNativeLibsWithMergeJniLibsForDebug
:app:processDebugJavaRes NO-SOURCE
:app:transformResourcesWithMergeJavaResForDebug
:app:validateSigningDebug
:app:packageDebug
:app:assembleDebug
BUILD SUCCESSFUL in 28s
28 actionable tasks: 28 executed
FATAL EXCEPTION: Animation Thread
Process: processing.test.sketch_190120b, PID: 8388
java.lang.SecurityException: getImeiForSlot: Neither user 10074 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:1684)
at android.os.Parcel.readException(Parcel.java:1637)
at com.android.internal.telephony.ITelephony$Stub$Proxy.getImeiForSlot(ITelephony.java:4481)
at android.telephony.TelephonyManager.getImei(TelephonyManager.java:904)
at android.telephony.TelephonyManager.getImei(TelephonyManager.java:887)
at processing.test.sketch_190120b.sketch_190120b.getIme(sketch_190120b.java:48)
at processing.test.sketch_190120b.sketch_190120b.setup(sketch_190120b.java:34)
at processing.core.PApplet.handleDraw(PApplet.java:1838)
at processing.core.PSurfaceNone.callDraw(PSurfaceNone.java:476)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:516)
FATAL EXCEPTION: Animation Thread
Process: processing.test.sketch_190120b, PID: 8416
java.lang.SecurityException: getImeiForSlot: Neither user 10074 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:1684)
at android.os.Parcel.readException(Parcel.java:1637)
at com.android.internal.telephony.ITelephony$Stub$Proxy.getImeiForSlot(ITelephony.java:4481)
at android.telephony.TelephonyManager.getImei(TelephonyManager.java:904)
at android.telephony.TelephonyManager.getImei(TelephonyManager.java:887)
at processing.test.sketch_190120b.sketch_190120b.getIme(sketch_190120b.java:48)
at processing.test.sketch_190120b.sketch_190120b.setup(sketch_190120b.java:34)
at processing.core.PApplet.handleDraw(PApplet.java:1838)
at processing.core.PSurfaceNone.callDraw(PSurfaceNone.java:476)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:516)
@sonichel===
i have already explained that you have to get this permission on runtime and i think you have not asked for it: manifest has no sense in this type of cas (“dangerous permissions”) since Mashmallow…
deprecated has not any importance with android.
where do I give permission to “dangerous permissions” ??? should I declare it in the sketch setup or in the Sketch Permissions menu?
@sonichel===
see here=
https://android.processing.org/reference/permissions/request.html



