SlideShare a Scribd company logo
1 of 16
Download to read offline
How do I?
Create a Native Interface
What’s a Native Interface?
✦Native interfaces allow us to invoke OS native code
✦We can use it directly in the app or wrap it in a library
(cn1lib) for a common abstraction
✦Native in Codename One is different from native in Java.
In Java native is always C, in Codename one it’s
something else
© Codename One 2017 all rights reserved
Native in Codename One
✦Android - Java (Dalvik/Art) code, you can still wrap
NDK code with AAR
✦iOS - Objective-C code and native libraries
✦Windows - C# code
✦JavaScript - JavaScript code
✦Desktop Port - Java SE code
© Codename One 2017 all rights reserved
package com.codename1.app.nativedemo;
import com.codename1.system.NativeInterface;
public interface CallNativeCode extends NativeInterface {
public String doThisInNative(String arg1, int arg2);
}
Hello World Native Interface
Generate Native Interface
✦The Generate Native Access action automatically
generates required native code stubs
✦Stubs will appear under the “native” directory
© Codename One 2017 all rights reserved
package com.codename1.app.nativedemo;
public class CallNativeCodeImpl {
public String doThisInNative(String param, int param1) {
return null;
}
public boolean isSupported() {
return false;
}
}
Android Stub
package com.codename1.app.nativedemo;
public class CallNativeCodeImpl {
public String doThisInNative(String param, int param1) {
return "Dummy";
}
public boolean isSupported() {
return true;
}
}
Android Implementation
#import "com_codename1_app_nativedemo_CallNativeCodeImpl.h"
@implementation com_codename1_app_nativedemo_CallNativeCodeImpl
-(NSString*)doThisInNative:(NSString*)param param1:(int)param1{
return nil;
}
-(BOOL)isSupported{
return NO;
}
@end
iOS Stub
#import "com_codename1_app_nativedemo_CallNativeCodeImpl.h"
@implementation com_codename1_app_nativedemo_CallNativeCodeImpl
-(NSString*)doThisInNative:(NSString*)param param1:(int)param1{
return @"Dummy";
}
-(BOOL)isSupported{
return YES;
}
@end
iOS Implementation
namespace com.codename1.app.nativedemo{
public class CallNativeCodeImpl : ICallNativeCodeImpl {
public string doThisInNative(String param, int param1) {
return null;
}
public bool isSupported() {
return false;
}
}
}
Windows Stub
(function(exports){
var o = {};
o.doThisInNative__java_lang_String_int = function(param1, param2, callback) {
callback.error(new Error("Not implemented yet"));
};
o.isSupported_ = function(callback) {
callback.complete(false);
};
exports.com_codename1_app_nativedemo_CallNativeCode= o;
})(cn1_get_native_interfaces());
JavaScript Stub
CallNativeCode cn = NativeLookup.create(CallNativeCode.class);
if(cn != null && cn.isSupported()) {
String returnVal = cn.doThisInNative("String", 1);
}
Using the Code
Implementation
✦Code doesn’t compile on the client & won’t have code
completion
✦A neat trick is using “include source” and then opening
the native source in xcode or Android Studio and
implementing the native code there
✦You can’t use all types. You can’t pass objects!
✦Use PeerComponent to represent a native UI widget
✦You can use callbacks from the native code
© Codename One 2017 all rights reserved
Build Hints
✦You can use build hints to inject many native interface
behaviors
✦Native code on Android often requires a 3rd party library
thru gradle, native code on iOS often uses cocoapods
we support both thru build hints
✦You can inject values into the manifest or plist to make
use of this
✦You can look thru existing cn1libs for sample code
© Codename One 2017 all rights reserved
Thank You!

More Related Content

What's hot

Zeppelin Helium: Spell
Zeppelin Helium: SpellZeppelin Helium: Spell
Zeppelin Helium: SpellPArk Hoon
 
Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)James Titcumb
 
jQuery Plugin
jQuery PluginjQuery Plugin
jQuery Pluginrbiggs
 
C++ for Java Developers (SwedenCpp Meetup 2017)
C++ for Java Developers (SwedenCpp Meetup 2017)C++ for Java Developers (SwedenCpp Meetup 2017)
C++ for Java Developers (SwedenCpp Meetup 2017)Patricia Aas
 
Pure virtual function and abstract class
Pure virtual function and abstract classPure virtual function and abstract class
Pure virtual function and abstract classAmit Trivedi
 
Incredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and GeneratorsIncredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and Generatorsdantleech
 
TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016CiaranMcNulty
 
Protocol in Swift
Protocol in SwiftProtocol in Swift
Protocol in SwiftYusuke Kita
 
Hug presentation for android tech talks #14
Hug presentation for android tech talks #14Hug presentation for android tech talks #14
Hug presentation for android tech talks #14Artur Staniec
 
vienna.js - Automatic testing of (RESTful) API documentation
vienna.js - Automatic testing of (RESTful) API documentationvienna.js - Automatic testing of (RESTful) API documentation
vienna.js - Automatic testing of (RESTful) API documentationRouven Weßling
 
02 Php Vars Op Control Etc
02 Php Vars Op Control Etc02 Php Vars Op Control Etc
02 Php Vars Op Control EtcGeshan Manandhar
 
Conscious Decoupling - Lone Star PHP
Conscious Decoupling - Lone Star PHPConscious Decoupling - Lone Star PHP
Conscious Decoupling - Lone Star PHPCiaranMcNulty
 

What's hot (20)

Zeppelin Helium: Spell
Zeppelin Helium: SpellZeppelin Helium: Spell
Zeppelin Helium: Spell
 
Clean Code
Clean CodeClean Code
Clean Code
 
Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)
 
jQuery Plugin
jQuery PluginjQuery Plugin
jQuery Plugin
 
C++ for Java Developers (SwedenCpp Meetup 2017)
C++ for Java Developers (SwedenCpp Meetup 2017)C++ for Java Developers (SwedenCpp Meetup 2017)
C++ for Java Developers (SwedenCpp Meetup 2017)
 
Anti Object-Oriented Design Patterns
Anti Object-Oriented Design PatternsAnti Object-Oriented Design Patterns
Anti Object-Oriented Design Patterns
 
C++basics
C++basicsC++basics
C++basics
 
C++basics
C++basicsC++basics
C++basics
 
Pure virtual function and abstract class
Pure virtual function and abstract classPure virtual function and abstract class
Pure virtual function and abstract class
 
Incredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and GeneratorsIncredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and Generators
 
TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016
 
PHP
PHPPHP
PHP
 
Php string function
Php string function Php string function
Php string function
 
Protocol in Swift
Protocol in SwiftProtocol in Swift
Protocol in Swift
 
Exporter Proxy
Exporter ProxyExporter Proxy
Exporter Proxy
 
4.2 PHP Function
4.2 PHP Function4.2 PHP Function
4.2 PHP Function
 
Hug presentation for android tech talks #14
Hug presentation for android tech talks #14Hug presentation for android tech talks #14
Hug presentation for android tech talks #14
 
vienna.js - Automatic testing of (RESTful) API documentation
vienna.js - Automatic testing of (RESTful) API documentationvienna.js - Automatic testing of (RESTful) API documentation
vienna.js - Automatic testing of (RESTful) API documentation
 
02 Php Vars Op Control Etc
02 Php Vars Op Control Etc02 Php Vars Op Control Etc
02 Php Vars Op Control Etc
 
Conscious Decoupling - Lone Star PHP
Conscious Decoupling - Lone Star PHPConscious Decoupling - Lone Star PHP
Conscious Decoupling - Lone Star PHP
 

Similar to How do i - create a native interface

How do I - Create a Native Interface.pdf
How do I - Create a Native Interface.pdfHow do I - Create a Native Interface.pdf
How do I - Create a Native Interface.pdfShaiAlmog1
 
How do I - Create a Native Interface - Transcript.pdf
How do I - Create a Native Interface - Transcript.pdfHow do I - Create a Native Interface - Transcript.pdf
How do I - Create a Native Interface - Transcript.pdfShaiAlmog1
 
July 2015 Android Taipei - Anti-Decompiler by SUKI
July 2015 Android Taipei - Anti-Decompiler by SUKIJuly 2015 Android Taipei - Anti-Decompiler by SUKI
July 2015 Android Taipei - Anti-Decompiler by SUKISuki Huang
 
Lies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerLies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerGarth Gilmour
 
Best Practices in apps development with Titanium Appcelerator
Best Practices in apps development with Titanium Appcelerator Best Practices in apps development with Titanium Appcelerator
Best Practices in apps development with Titanium Appcelerator Alessio Ricco
 
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...Whymca
 
NativeScript and Angular
NativeScript and AngularNativeScript and Angular
NativeScript and AngularJen Looper
 
One Step Ahead of Cheaters -- Instrumenting Android Emulators
One Step Ahead of Cheaters -- Instrumenting Android EmulatorsOne Step Ahead of Cheaters -- Instrumenting Android Emulators
One Step Ahead of Cheaters -- Instrumenting Android EmulatorsPriyanka Aash
 
Titanium appcelerator best practices
Titanium appcelerator best practicesTitanium appcelerator best practices
Titanium appcelerator best practicesAlessio Ricco
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and EvolutionEelco Visser
 
Angular 2 and NativeScript
Angular 2 and NativeScriptAngular 2 and NativeScript
Angular 2 and NativeScriptJen Looper
 
Hacking the Codename One Source Code - Part IV - Transcript.pdf
Hacking the Codename One Source Code - Part IV - Transcript.pdfHacking the Codename One Source Code - Part IV - Transcript.pdf
Hacking the Codename One Source Code - Part IV - Transcript.pdfShaiAlmog1
 
PIL - A Platform Independent Language
PIL - A Platform Independent LanguagePIL - A Platform Independent Language
PIL - A Platform Independent Languagezefhemel
 
Android RenderScript
Android RenderScriptAndroid RenderScript
Android RenderScriptJungsoo Nam
 
Ignite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseIgnite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseJen Looper
 
Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13Stephan Hochdörfer
 
"Xapi-lang For declarative code generation" By James Nelson
"Xapi-lang For declarative code generation" By James Nelson"Xapi-lang For declarative code generation" By James Nelson
"Xapi-lang For declarative code generation" By James NelsonGWTcon
 
Code and Conquer with Globe Labs, October 27, 2012
Code and Conquer with Globe Labs, October 27, 2012Code and Conquer with Globe Labs, October 27, 2012
Code and Conquer with Globe Labs, October 27, 2012jobandesther
 

Similar to How do i - create a native interface (20)

How do I - Create a Native Interface.pdf
How do I - Create a Native Interface.pdfHow do I - Create a Native Interface.pdf
How do I - Create a Native Interface.pdf
 
How do I - Create a Native Interface - Transcript.pdf
How do I - Create a Native Interface - Transcript.pdfHow do I - Create a Native Interface - Transcript.pdf
How do I - Create a Native Interface - Transcript.pdf
 
July 2015 Android Taipei - Anti-Decompiler by SUKI
July 2015 Android Taipei - Anti-Decompiler by SUKIJuly 2015 Android Taipei - Anti-Decompiler by SUKI
July 2015 Android Taipei - Anti-Decompiler by SUKI
 
Lies Told By The Kotlin Compiler
Lies Told By The Kotlin CompilerLies Told By The Kotlin Compiler
Lies Told By The Kotlin Compiler
 
Best Practices in apps development with Titanium Appcelerator
Best Practices in apps development with Titanium Appcelerator Best Practices in apps development with Titanium Appcelerator
Best Practices in apps development with Titanium Appcelerator
 
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
 
NativeScript and Angular
NativeScript and AngularNativeScript and Angular
NativeScript and Angular
 
Javascript Best Practices
Javascript Best PracticesJavascript Best Practices
Javascript Best Practices
 
One Step Ahead of Cheaters -- Instrumenting Android Emulators
One Step Ahead of Cheaters -- Instrumenting Android EmulatorsOne Step Ahead of Cheaters -- Instrumenting Android Emulators
One Step Ahead of Cheaters -- Instrumenting Android Emulators
 
Titanium appcelerator best practices
Titanium appcelerator best practicesTitanium appcelerator best practices
Titanium appcelerator best practices
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and Evolution
 
Angular 2 and NativeScript
Angular 2 and NativeScriptAngular 2 and NativeScript
Angular 2 and NativeScript
 
Hacking the Codename One Source Code - Part IV - Transcript.pdf
Hacking the Codename One Source Code - Part IV - Transcript.pdfHacking the Codename One Source Code - Part IV - Transcript.pdf
Hacking the Codename One Source Code - Part IV - Transcript.pdf
 
PIL - A Platform Independent Language
PIL - A Platform Independent LanguagePIL - A Platform Independent Language
PIL - A Platform Independent Language
 
Android RenderScript
Android RenderScriptAndroid RenderScript
Android RenderScript
 
Ignite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseIgnite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and Firebase
 
JavaScript Core
JavaScript CoreJavaScript Core
JavaScript Core
 
Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13
 
"Xapi-lang For declarative code generation" By James Nelson
"Xapi-lang For declarative code generation" By James Nelson"Xapi-lang For declarative code generation" By James Nelson
"Xapi-lang For declarative code generation" By James Nelson
 
Code and Conquer with Globe Labs, October 27, 2012
Code and Conquer with Globe Labs, October 27, 2012Code and Conquer with Globe Labs, October 27, 2012
Code and Conquer with Globe Labs, October 27, 2012
 

More from Shai Almog

The Duck Talks Back - Secrets of The Debugging Masters
The Duck Talks Back - Secrets of The Debugging MastersThe Duck Talks Back - Secrets of The Debugging Masters
The Duck Talks Back - Secrets of The Debugging MastersShai Almog
 
Logging Best Practices - Avoid the rinse repeat CI/CD Process
Logging Best Practices - Avoid the rinse repeat CI/CD ProcessLogging Best Practices - Avoid the rinse repeat CI/CD Process
Logging Best Practices - Avoid the rinse repeat CI/CD ProcessShai Almog
 
Cloud Native Debugging in Production - Dig Deep into your agents
Cloud Native Debugging in Production - Dig Deep into your agentsCloud Native Debugging in Production - Dig Deep into your agents
Cloud Native Debugging in Production - Dig Deep into your agentsShai Almog
 
How do i - localization and internationalization (l10n, i18n)
How do i - localization and internationalization (l10n, i18n)How do i - localization and internationalization (l10n, i18n)
How do i - localization and internationalization (l10n, i18n)Shai Almog
 
5 Amazing Features in Codename One 3.7
5 Amazing Features in Codename One 3.75 Amazing Features in Codename One 3.7
5 Amazing Features in Codename One 3.7Shai Almog
 
Understand Properties in Codename One
Understand Properties in Codename One Understand Properties in Codename One
Understand Properties in Codename One Shai Almog
 
What is codename one
What is codename oneWhat is codename one
What is codename oneShai Almog
 
How To Use The Codename One Sources
How To Use The Codename One SourcesHow To Use The Codename One Sources
How To Use The Codename One SourcesShai Almog
 
Codename one Cordova/PhoneGap Support
Codename one Cordova/PhoneGap SupportCodename one Cordova/PhoneGap Support
Codename one Cordova/PhoneGap SupportShai Almog
 
Public showcase
Public showcasePublic showcase
Public showcaseShai Almog
 

More from Shai Almog (10)

The Duck Talks Back - Secrets of The Debugging Masters
The Duck Talks Back - Secrets of The Debugging MastersThe Duck Talks Back - Secrets of The Debugging Masters
The Duck Talks Back - Secrets of The Debugging Masters
 
Logging Best Practices - Avoid the rinse repeat CI/CD Process
Logging Best Practices - Avoid the rinse repeat CI/CD ProcessLogging Best Practices - Avoid the rinse repeat CI/CD Process
Logging Best Practices - Avoid the rinse repeat CI/CD Process
 
Cloud Native Debugging in Production - Dig Deep into your agents
Cloud Native Debugging in Production - Dig Deep into your agentsCloud Native Debugging in Production - Dig Deep into your agents
Cloud Native Debugging in Production - Dig Deep into your agents
 
How do i - localization and internationalization (l10n, i18n)
How do i - localization and internationalization (l10n, i18n)How do i - localization and internationalization (l10n, i18n)
How do i - localization and internationalization (l10n, i18n)
 
5 Amazing Features in Codename One 3.7
5 Amazing Features in Codename One 3.75 Amazing Features in Codename One 3.7
5 Amazing Features in Codename One 3.7
 
Understand Properties in Codename One
Understand Properties in Codename One Understand Properties in Codename One
Understand Properties in Codename One
 
What is codename one
What is codename oneWhat is codename one
What is codename one
 
How To Use The Codename One Sources
How To Use The Codename One SourcesHow To Use The Codename One Sources
How To Use The Codename One Sources
 
Codename one Cordova/PhoneGap Support
Codename one Cordova/PhoneGap SupportCodename one Cordova/PhoneGap Support
Codename one Cordova/PhoneGap Support
 
Public showcase
Public showcasePublic showcase
Public showcase
 

Recently uploaded

CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceanilsa9823
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Pooja Nehwal
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceanilsa9823
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7Pooja Nehwal
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPsychicRuben LoveSpells
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRnishacall1
 

Recently uploaded (7)

CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 

How do i - create a native interface