در این بخش میخواهیم تغییراتی را در برنامه انجام دهیم تا با توجه به زبان گوشی کاربر , نام برنامه نیز تغییر کند ! برای مثال اگر زبان گوشی کاربر فارسی است نام برنامه نیز فارسی باشد و در غیر اینصورت نام برنامه انگلیسی باشد !
برای شروع وارد پوشه سورس برنامه مورد نظرتان شوید و در پوشه Objects \ resدو پوشه با نام های زیر ایجاد کنید :
values-en
values-fa
تا اینجا ما برای دو زبان “فارسی – fa” و “انگلیسی – en” پوشه ساخته ایم .
داخل هرکدام از این پوشه ها باید یک فایل با نام stringsبا فرمت xmlایجاد کنید و کد زیر را داخل آن قرار دهید .
برای اینکار میتوانید از نرم افزار NotePad یا سایر ویرایشگر های متن کمک بگیرید و توجه داشته باشید که فایل را از نوع utf-8 ذخیره کنید تا از زبان فارسی پشتیبانی کند .
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name = "AppName">یاهو ۹۸</string>
</resources>
در کد بالا به جای “یاهو ۹۸” نام مورد نظرتان را جایگزین کنید و چون نام بالا فارسی است این فایل را در پوشه values-fa ذخیره میکنیم .
مجددا یک فایل دیگر به همین شکل ایجاد کنید و نام برنامه را انگلیسی وارد کنید و در پوشه values-en ذخیره کنید .
نکته مهم این است که باید دسترسی این فایل ها را روی Road Only قرار دهید ( روی فایل راست کلیک کنید و گزینه Properties را انتخاب کنید.
در کادری که باز میشود گزینه Read-Only را تیک بزنید و بر روی OK کلیک کنید ) و باید حتما این کار را انجام دهید و در غیر اینصورت فایل ها در هنگام خروجی گرفتن از برنامه حذف میشوند …
وارد بیسیک فور اندروید شوید و کد های زیر را به Manifest اضافه کنید :
اس ام اس بلند ( طولانی ) رو در بیسیک فور اندروید ارسال کنید که به مشکل عدم ارسال بر بخورید.
با تابع زیر میتونید کامل این مشکل رو برطف کنید و محدودیت رو بردارید.
Sub SendLargeSms(Number As String , Message As String)
Dim r As Reflector
r.Target = r.RunStaticMethod("android.telephony.SmsManager", "getDefault", Null, Null)
Dim parts As Object
parts = r.RunMethod2("divideMessage", Message, "java.lang.String")
r.RunMethod4("sendMultipartTextMessage", _
Array As Object(Number, Null, parts, Null, Null), _
Array As String("java.lang.String", "java.lang.String", _
"java.util.ArrayList", "java.util.ArrayList", "java.util.ArrayList"))
End Sub
در این کد با استفاده از Reflection و دسترسی به کدجاوا تابعی بدین منظور نوشته شده است.
اکر کتابخانه مورد نظر در دسترس شما قرار نداشت کافیه فقط با آیدی تلگرام ما در ارتباط باشید.
دید تا حالا تو برنامه های متعددی به جای ثبت نام با کانت های گوگل و فیسبوک و غیره لاگین میشن ؟
حتما خیلی براتون جالب بوده ؟
امروز میخواهیم این روش رو به شما به راحت ترین شیوه بیان کنیم برای این کار باید طبق زیر عمل کنید :
#Region Project Attributes
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
#Extends: android.support.v7.app.AppCompatActivity
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim id As String = ""
Dim sign As SignGoogle
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("Layout1")
sign.Initialize(id,Me)
Dim ls1 As List
ls1 = sign.GetAccountList
Dim Builder As MaterialDialogBuilder
Builder.Initialize("GoogleList")
Dim si As MaterialSimpleListItem
Builder.Title("یک حساب انتخاب کنید")
If ls1.Size < 1 Then
Else
For i = 0 To ls1.Size -1
Dim cs As CSBuilder
cs.Initialize.Size(13).Append(ls1.Get(i)).PopAll
si.Initialize(Null, cs)
si.BackgroundColor = Colors.White
Builder.AddSimpleItem(si)
Next
Builder.Show
End If
End Sub
Sub GoogleList_SimpleItemSelected (Dialog As MaterialDialog, Position As Int, Item As MaterialSimpleListItem)
ToastMessageShow(Item.Content, False)
sign.SelectAccount(Item.Content)
sign.RequestSign("UserLogin")
Dialog.Dismiss
End Sub
Sub UserLogin(Data As Map,Login As Boolean)
Log(Data.Get("id"))
Log(Data.Get("email"))
Log(Data.Get("name"))
Log(Data.Get("family_name"))
Log(Data.Get("picture"))
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
و یک کclass هم دارین به این صورت :
Private Sub Class_Globals
Private clientId As String : clientId = "" 'enter client id here
'Private clientSecret As String : clientSecret = "" 'client secret here
Private AccessToken As String
Private userInfoLink As String : userInfoLink = "https://www.googleapis.com/oauth2/v1/userinfo"
Private m_GoogleAccountManager As clsB_GoogleAccountManager
Private modules As Object
Private evt As String
Private l_GoogleAccounts() As Object
End Sub
'Step 1
Public Sub Initialize(sClientID As String,module As Object)
clientId = sClientID
m_GoogleAccountManager.Initialize(0)
modules = module
End Sub
'Step 3
Sub SelectAccount(AccountName As String)
For Each l_joAccount As JavaObject In l_GoogleAccounts
If l_joAccount.GetField ("name") = AccountName Then
Exit
End If
Next
Dim l_sScopes As String = "email profile"
Dim l_sAuthTokenType As String = $"oauth2:${l_sScopes}"$
Dim l_sAccessToken As String = m_GoogleAccountManager.getAuthToken_foreground(l_joAccount,l_sAuthTokenType)
AccessToken = l_sAccessToken
End Sub
'Step 2
Sub GetAccountList As List
l_GoogleAccounts = m_GoogleAccountManager.getAccountsByType("com.google")
If l_GoogleAccounts.Length = 0 Then Return Null
Dim l_sAccountNames As List : l_sAccountNames.Initialize
For Each l_joAccount As JavaObject In l_GoogleAccounts
Dim l_sAccountName As String = l_joAccount.GetField ("name")
l_sAccountNames.Add(l_sAccountName)
Next
Return l_sAccountNames
End Sub
'Step 4
Sub RequestSign(Event As String)
evt = Event
Dim dl As PersianFastNetwork
dl.initialize("dl").BuildGetQuery(userInfoLink,"getUserDetails") _
.addParametrs("access_token",AccessToken).executRequesAsString
ProgressDialogShow2("درحال دریافت اطلاعات...",False)
End Sub
Sub dl_onGetStringOkListener(Result As String , Tag As String )
ProgressDialogHide
If Result <> Null Then
Select Tag
Case "GetAccessToken"
Dim JSON As JSONParser
Dim map1 As Map
JSON.Initialize(Result)
map1=JSON.NextObject
AccessToken=map1.Get("access_token")
CallSub3(modules,evt,map1,False)
Case "getUserDetails"
Dim JSON As JSONParser
Dim map1 As Map
JSON.Initialize(Result)
map1 = JSON.NextObject
CallSub3(modules,evt,map1,True)
End Select
End If
End Sub
خوب حالا من توضیحات لازم رو میدم
شما یه پروژه باز میکنید و کد های لولی رو داخل اکتیویتی main پست میکنید .
بعد یه class به اسم SignGoogle میسازد و کد های class رو داخلش پست میکنید .
بعد وارد منیفست میشید کد های زیر رو داخل منیفست قرار میدی :
اول از همه ما باید وارد سایت گوگل بشیم از آدرس زیر که راحترین راه می باشد برای ساخت آیدی یا همان api keys
http://console.developers.google.com
و بعد از ساخت api key مربوطه اون رو در اکتیویتی main در قسمت id میزاریم و باهاش به گوشی لاگین میشیم که توش برنامه گوگل سرویس و پلی نصب باشه
مدرس : مجید گودرزی
این آموزش از قبل تو کانال بود فقط چون دیدیم ….. هایی کپی کدها رو تو سایت های خوشون منتشر دادن به اسم خودشون بنا به درخواست نویسنده آقای گودرزی دوباره داخل سایت گذاشته شد که ……………………. موفق باشید.
من یه قطعه سورس دیتابیس انلاین با محیط پر قدرت بیسیک ۴ اندروید برای شما تهیه کردم که در هیچ جا نمیتوانی اموزششو پیدا کنید .
باید بگم کدها شباهت زیادی با دیتابیس محلی یا همان دیتابیس افلاین دارد مطمعن هستم خیلی خوشحالتون میکنه
قابلیت ها
کدهای کوتاه و مرتب و قابل فهم
جستجو
تفکیک
رفرش
برعکس خواندن ایتمها مثلا از ۱۰ به ۰
استفاده از اسکرول ویو
فعال بودن کلیکی ایتم ها
خواندن ننوشته های !@#﷼٪^÷×)(ـ+\{} و انگلیسی و فارسی
دیالوگ برای رفرش یا اجرای برنامه
و غیره …
در اینجا بگم من از هاست استفاده نکردم از شبیه ساز زمپ استفاده کردم و اگر هم از محیطه زمپ یا هاست اشنایی نداری میتونید از اینجا که من دادم یا یه سرج کوتاه میتونید اموزش هایی زیادی در این مورد پیدا کنید.
همان طور که میدانید خیلی از دوستان مشتاقن که دیتابیس آنلاین رو یاد بگیرن و منم تصمیم گرفتم که این اموزش را قدم به قدم براتون انجام بدم.
اولین چیزی که شما عزیزان نیاز دارید هاست و دامینه که بتونید سایتتون رو راه بندازید وقابل ذکر هست باید خدمتتون عارظ بشم در هاستای رایگان و شبیه ساز زمپ یا ومپ این عمل قابل اجرا نیست و دلیلشو من نمیدانم
خب بعد از این که هاستتون رو تهیه کردیدحالا باید یه یک دیتابیس بسازید برای اینکار از طریق پنل هاستتون گزینه mysql databases را بزنید.