رفتن به مطلب
  • 0

kiosk mode برنامه


Mr.Kafiri

سوال

سلام من یه برنامه ای ساختم میخوام این برنامه بصورت

kiosk mode باشه یعنی تنها برنامه روی تبلت یا موبایل همین باشه.... و هیچ برنامه  یا منویی قابل دسترسی نباشه..

کتابخانه ای چیزی نداره؟؟؟ اصلا میشه پیاده سازی کرد؟؟؟

حل شد!!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

1 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام

از لانچر استفاده کردم... کد زیر رو درون منیفست قرار دهید..

AddActivityText(main, <intent-filter >
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>)
	
	
AddPermission("android.permission.SET_WALLPAPER")
AddPermission("android.permission.SET_WALLPAPER_HINTS")
SetActivityAttribute(main, android:theme, @android:style/Theme.Wallpaper)

قفط اگر روی دستگاه واقعی تست میکنید حتما یه کلید بزارید تا بتونید از برنامه بیاد بیرون و لانچر رو عوض کنید...

Dim set As Intent
set.Initialize("android.settings.SETTINGS","")
StartActivity(set)

درضمن اگر خواستید استاتوس بار رو هم قفل کنید. از کد زیر استفاده کنید

Sub Globals
	Dim booleanIsIntentActive As Boolean 'قبلش تو گلوبال این رو تعریف کنید
End Sub

Sub Activity_Resume
	If booleanIsIntentActive Then Return 'چک کردن دسترسی کشیدن روی سایر برنامه ها
	If CanDrawOverlays = False Then
		Dim in As Intent
		in.Initialize ("android.settings.action.MANAGE_OVERLAY_PERMISSION", "package:" & Application.PackageName)
		booleanIsIntentActive = True
		StartActivity (in)
		Wait For Activity_Resume
		booleanIsIntentActive = False
	End If
	
	CallSub(Me,AddOverlay) 'اگر دسترسی داده شده بود این ساب صدا زده بشه
End Sub

ساب AddOverlay و بقیه ساب های مورد نیاز:

#Region Code to disable access to the StatusBar
Sub AddOverlay
	Dim mView As Label
	mView.Initialize("")
	mView.Text = " Lock StatusBar"
	mView.textColor = Colors.LightGray
	Dim mlp As JavaObject
	Dim vtype As Int = -1, pixelFormat As Int = -3
	mlp.InitializeNewInstance("android.view.WindowManager$LayoutParams", Array(vtype, 100, 2010,296, pixelFormat))
	mlp.SetField("gravity", Bit.Or(Gravity.TOP, Gravity.CENTER))
	Dim windowManager As JavaObject = GetContext.RunMethod("getSystemService", Array("window"))
	windowManager.RunMethod("addView", Array(mView, mlp))
End Sub

Sub GetContext As JavaObject
	Return GetBA.GetField("context")
End Sub

Sub GetBA As JavaObject
	Dim jo As JavaObject
	Dim cls As String = Me
	cls = cls.SubString("class ".Length)
	jo.InitializeStatic(cls)
	Return jo.GetFieldJO("processBA")
End Sub
#End Region

Sub CanDrawOverlays As Boolean

	Dim javaobjectContext As JavaObject
	Dim javaobjectSettings As JavaObject
	Dim phoneInstance As Phone
	
	If phoneInstance.SdkVersion >= 23 Then
		javaobjectContext.InitializeContext
		javaobjectSettings.InitializeStatic ("android.provider.Settings")
		Return javaobjectSettings.RunMethod ("canDrawOverlays", Array (javaobjectContext))
	Else
		Return True
	End If
	
End Sub

تمام کدها:

#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

Sub Process_Globals

End Sub

Sub Globals
	Dim booleanIsIntentActive As Boolean
End Sub

Sub Activity_Create(FirstTime As Boolean)


End Sub

Sub Activity_Resume
	If booleanIsIntentActive Then Return
	If CanDrawOverlays = False Then
		Dim in As Intent
		in.Initialize ("android.settings.action.MANAGE_OVERLAY_PERMISSION", "package:" & Application.PackageName)
		booleanIsIntentActive = True
		StartActivity (in)
		Wait For Activity_Resume
		booleanIsIntentActive = False
	End If
	
	AddOverlay
End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

#Region Code to disable access to the StatusBar
Sub AddOverlay
	Dim mView As Label
	mView.Initialize("")
	mView.Text = " Lock StatusBar"
	mView.textColor = Colors.LightGray
	Dim mlp As JavaObject
	Dim vtype As Int = -1, pixelFormat As Int = -3
	mlp.InitializeNewInstance("android.view.WindowManager$LayoutParams", Array(vtype, 100, 2010,296, pixelFormat))
	mlp.SetField("gravity", Bit.Or(Gravity.TOP, Gravity.CENTER))
	Dim windowManager As JavaObject = GetContext.RunMethod("getSystemService", Array("window"))
	windowManager.RunMethod("addView", Array(mView, mlp))
End Sub

Sub GetContext As JavaObject
	Return GetBA.GetField("context")
End Sub

Sub GetBA As JavaObject
	Dim jo As JavaObject
	Dim cls As String = Me
	cls = cls.SubString("class ".Length)
	jo.InitializeStatic(cls)
	Return jo.GetFieldJO("processBA")
End Sub
#End Region

Sub CanDrawOverlays As Boolean

	Dim javaobjectContext As JavaObject
	Dim javaobjectSettings As JavaObject
	Dim phoneInstance As Phone
	
	If phoneInstance.SdkVersion >= 23 Then
		javaobjectContext.InitializeContext
		javaobjectSettings.InitializeStatic ("android.provider.Settings")
		Return javaobjectSettings.RunMethod ("canDrawOverlays", Array (javaobjectContext))
	Else
		Return True
	End If
	
End Sub

منیفست:

AddManifestText(
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="28"/>
<supports-screens android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" 
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
CreateResourceFromFile(Macro, Themes.DarkTheme)

AddManifestText (<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>)	
AddPermission(android.permission.SYSTEM_OVERLAY_WINDOW)
AddPermission(android.permission.SYSTEM_ALERT_WINDOW)

------------------------------------------------------------

 * من کلید خروج از برنامه رو یادم رفت خودتون بزارید *

دانلود سورس کد:

Kiosk Mode.zip

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...