Mr.Kafiri 221 ارسال شده در 24 اسفند، ۱۳۹۸ اشتراک گذاری ارسال شده در 24 اسفند، ۱۳۹۸ سلام من یه برنامه ای ساختم میخوام این برنامه بصورت kiosk mode باشه یعنی تنها برنامه روی تبلت یا موبایل همین باشه.... و هیچ برنامه یا منویی قابل دسترسی نباشه.. کتابخانه ای چیزی نداره؟؟؟ اصلا میشه پیاده سازی کرد؟؟؟ حل شد!! لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
Mr.Kafiri 221 ارسال شده در 26 اسفند، ۱۳۹۸ سازنده اشتراک گذاری ارسال شده در 26 اسفند، ۱۳۹۸ سلام از لانچر استفاده کردم... کد زیر رو درون منیفست قرار دهید.. 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 لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
سوال
Mr.Kafiri 221
سلام من یه برنامه ای ساختم میخوام این برنامه بصورت
kiosk mode باشه یعنی تنها برنامه روی تبلت یا موبایل همین باشه.... و هیچ برنامه یا منویی قابل دسترسی نباشه..
کتابخانه ای چیزی نداره؟؟؟ اصلا میشه پیاده سازی کرد؟؟؟
حل شد!!
لینک ارسال
به اشتراک گذاری در سایت های دیگر
1 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.