דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. אנדרואיד - כללי
  3. עזרה הדדית - אנדרואיד
  4. בקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים

בקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים

מתוזמן נעוץ נעול הועבר עזרה הדדית - אנדרואיד
23 פוסטים 7 כותבים 191 צפיות 6 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מישהו12מ מישהו12

    @למה-באתי מה???????????????????
    לי הוא עשה דברים כאלו בדקות.

    למה באתיל מנותק
    למה באתיל מנותק
    למה באתי
    מדריכים
    כתב נערך לאחרונה על ידי
    #13

    @מישהו12 כתב בבקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים:

    @למה-באתי מה???????????????????
    לי הוא עשה דברים כאלו בדקות.

    Screenshot_20250728-223850.png

    מישהו12מ תגובה 1 תגובה אחרונה
    0
    • למה באתיל למה באתי

      @מישהו12 כתב בבקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים:

      @למה-באתי מה???????????????????
      לי הוא עשה דברים כאלו בדקות.

      Screenshot_20250728-223850.png

      מישהו12מ מנותק
      מישהו12מ מנותק
      מישהו12
      מדריכים
      כתב נערך לאחרונה על ידי
      #14

      @למה-באתי תבקש ממנו שידחוס לזיפ את הקוד, זה הכול.

      הבלוג שלי
      https://aiv-dev.com/he-IL/

      תגובה 1 תגובה אחרונה
      1
      • למה באתיל למה באתי

        @YOLEVI כתב בבקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים:

        @למה-באתי אתה יכול פשוט לארוז לקובץ זיפ בעצמך?
        פשוט תיצור את כל הקבצים והתקיות לפי הסדר הנכון ותעלה את הזיפ,

        קח בחשבון שלא הייתי בונה על זה שזה לא יהיה מלא שגיאות במיוחד שזה קוד ראשוני איך שאני מבין

        איך אני יוצר ? אין לי אנדרואיד סטודיו בזמין

        Y מנותק
        Y מנותק
        YOLEVI
        כתב נערך לאחרונה על ידי
        #15

        @למה-באתי אתה כותב את הקודים בקבצים עם עורך טקסט, הכי פשוט בעולם

        תגובה 1 תגובה אחרונה
        0
        • למה באתיל למה באתי

          הבנתי אותך עכשיו — אתה רוצה פרויקט Android מלא ומוכן להעתקה ישירות ל־Android Studio, עם שירות VPN שמשלב DNS פנימי שמבצע סינון לפי רשימת חסימה, כולל רשימת דומיינים בדוגמה, ממשק משתמש להפעלה/כיבוי עם סיסמה.


          אני נותן לך כאן את כל הקבצים המרכזיים בפרויקט מלא, מסודרים לפי מיקום, עם הקוד המלא של כל קובץ. תוכל להעתיק ולהדביק בכל קובץ בפרויקט חדש, ולבנות מיד.


          מבנה התיקיות

          DNSBlocker/
          └── app/
          └── src/
          └── main/
          ├── AndroidManifest.xml
          ├── java/com/example/dnsblocker/
          │ ├── MainActivity.kt
          │ ├── DnsVpnService.kt
          │ └── DNSHandler.kt
          └── res/
          ├── layout/
          │ └── activity_main.xml
          └── values/
          └── strings.xml


          1. settings.gradle

          rootProject.name = "DNSBlocker"
          include(":app")


          1. build.gradle (שורש)

          buildscript {
          repositories {
          google()
          mavenCentral()
          }
          dependencies {
          classpath 'com.android.tools.build:gradle:8.0.2'
          }
          }

          allprojects {
          repositories {
          google()
          mavenCentral()
          }
          }


          1. app/build.gradle

          plugins {
          id 'com.android.application'
          id 'org.jetbrains.kotlin.android'
          }

          android {
          namespace 'com.example.dnsblocker'
          compileSdk 34

          defaultConfig {
              applicationId "com.example.dnsblocker"
              minSdk 26
              targetSdk 34
              versionCode 1
              versionName "1.0"
          }
          
          buildTypes {
              release {
                  minifyEnabled false
              }
          }
          kotlinOptions {
              jvmTarget = "17"
          }
          

          }

          dependencies {
          implementation "androidx.core:core-ktx:1.12.0"
          implementation "androidx.appcompat:appcompat:1.7.0"
          implementation "com.google.android.material:material:1.9.0"

          implementation 'dnsjava:dnsjava:3.5.2'
          

          }


          1. AndroidManifest.xml (app/src/main/)

          <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.dnsblocker">

          <uses-permission android:name="android.permission.INTERNET" />
          
          <application
              android:allowBackup="false"
              android:label="@string/app_name"
              android:theme="@style/Theme.Material3.DayNight.NoActionBar">
          
              <activity android:name=".MainActivity"
                  android:exported="true">
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN"/>
                      <category android:name="android.intent.category.LAUNCHER"/>
                  </intent-filter>
              </activity>
          
              <service
                  android:name=".DnsVpnService"
                  android:permission="android.permission.BIND_VPN_SERVICE"
                  android:exported="true" />
          </application>
          

          </manifest>


          1. res/layout/activity_main.xml

          <?xml version="1.0" encoding="utf-8"?>
          <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:gravity="center"
          android:orientation="vertical"
          android:padding="24dp">

          <TextView
              android:id="@+id/statusText"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="חסימת DNS פעילה"
              android:textSize="24sp"
              android:paddingBottom="20dp"
              android:textAlignment="center" />
          
          <Button
              android:id="@+id/toggleButton"
              android:layout_width="200dp"
              android:layout_height="wrap_content"
              android:text="כבה חסימה" />
          

          </LinearLayout>


          1. res/values/strings.xml

          <resources>
          <string name="app_name">חסימת DNS</string>
          </resources>


          1. MainActivity.kt (app/src/main/java/com/example/dnsblocker/)

          package com.example.dnsblocker

          import android.app.AlertDialog
          import android.content.Intent
          import android.os.Bundle
          import android.widget.Button
          import android.widget.TextView
          import androidx.appcompat.app.AppCompatActivity

          class MainActivity : AppCompatActivity() {

          private val vpnServiceIntent by lazy { Intent(this, DnsVpnService::class.java) }
          private lateinit var toggleBtn: Button
          private lateinit var statusText: TextView
          
          private var vpnRunning = false
          
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
          
              toggleBtn = findViewById(R.id.toggleButton)
              statusText = findViewById(R.id.statusText)
          
              toggleBtn.setOnClickListener {
                  if (vpnRunning) {
                      askPasswordAndStop()
                  } else {
                      startVpn()
                  }
              }
          
              startVpn() // הפעלה אוטומטית עם פתיחת האפליקציה
          }
          
          private fun startVpn() {
              startService(vpnServiceIntent)
              vpnRunning = true
              toggleBtn.text = "כבה חסימה"
              statusText.text = "חסימת DNS פעילה"
          }
          
          private fun stopVpn() {
              stopService(vpnServiceIntent)
              vpnRunning = false
              toggleBtn.text = "הפעל חסימה"
              statusText.text = "חסימת DNS מושבתת"
          }
          
          private fun askPasswordAndStop() {
              val input = android.widget.EditText(this).apply {
                  inputType = android.text.InputType.TYPE_CLASS_TEXT or android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD
              }
          
              AlertDialog.Builder(this)
                  .setTitle("הזן סיסמה לביטול חסימה")
                  .setView(input)
                  .setPositiveButton("אישור") { dialog, _ ->
                      val pass = input.text.toString()
                      if (pass == "1234") {  // שנה כאן את הסיסמה לפי רצונך
                          stopVpn()
                      } else {
                          android.widget.Toast.makeText(this, "סיסמה שגויה", android.widget.Toast.LENGTH_SHORT).show()
                      }
                      dialog.dismiss()
                  }
                  .setNegativeButton("ביטול") { dialog, _ -> dialog.dismiss() }
                  .show()
          }
          

          }


          1. DNSHandler.kt (app/src/main/java/com/example/dnsblocker/)

          package com.example.dnsblocker

          import org.xbill.DNS.*
          import java.net.DatagramPacket
          import java.net.DatagramSocket
          import kotlin.concurrent.thread

          class DNSHandler(
          private val blockedDomains: Set<String>,
          private val listenPort: Int = 5353
          ) {

          private var socket: DatagramSocket? = null
          private var running = false
          
          fun start() {
              running = true
              socket = DatagramSocket(listenPort)
              thread(start = true) {
                  val buffer = ByteArray(512)
                  while (running) {
                      try {
                          val packet = DatagramPacket(buffer, buffer.size)
                          socket?.receive(packet)
                          thread {
                              handlePacket(packet)
                          }
                      } catch (e: Exception) {
                          e.printStackTrace()
                      }
                  }
                  socket?.close()
              }
          }
          
          fun stop() {
              running = false
              socket?.close()
          }
          
          private fun handlePacket(packet: DatagramPacket) {
              try {
                  val request = Message.parse(packet.data)
                  val query = request.question
                  val queriedDomain = query.name.toString(true).lowercase()
          
                  val response = Message(request.id)
                  response.header.rcode = Rcode.NOERROR
                  response.addRecord(query, Section.QUESTION)
                  response.header.qr = true // תשובה
          
                  if (isBlocked(queriedDomain)) {
                      // החזרת NXDOMAIN לאתרים חסומים
                      response.header.rcode = Rcode.NXDOMAIN
                  } else {
                      // העברה לשרת DNS חיצוני (לדוגמה 8.8.8.8)
                      val forwardResponse = forwardQuery(request)
                      if (forwardResponse != null) {
                          for (section in 0..3) {
                              forwardResponse.getSectionArray(section).forEach {
                                  response.addRecord(it, section)
                              }
                          }
                      } else {
                          response.header.rcode = Rcode.SERVFAIL
                      }
                  }
          
                  val responseData = response.toWire()
                  val responsePacket = DatagramPacket(
                      responseData,
                      responseData.size,
                      packet.address,
                      packet.port
                  )
                  socket?.send(responsePacket)
          
              } catch (e: Exception) {
                  e.printStackTrace()
              }
          }
          
          private fun isBlocked(domain: String): Boolean {
              return blockedDomains.any { domain.endsWith(it) }
          }
          
          private fun forwardQuery(request: Message): Message? {
              return try {
                  val resolver = SimpleResolver("8.8.8.8")
                  resolver.timeout = 2
                  resolver.send(request)
              } catch (e: Exception) {
                  null
              }
          }
          

          }


          1. DnsVpnService.kt (app/src/main/java/com/example/dnsblocker/)

          package com.example.dnsblocker

          import android.net.VpnService
          import android.content.Intent
          import android.os.ParcelFileDescriptor
          import kotlin.concurrent.thread

          class DnsVpnService : VpnService() {

          private var vpnInterface: ParcelFileDescriptor? = null
          private var dnsHandler: DNSHandler? = null
          
          // דוגמת רשימת חסימה - הוסף את הדומיינים שברצונך לחסום כאן
          private val blockedDomains = setOf(
              "badpornsite.com",
              "adultsite.net",
              "xxxexample.org",
              "exampleporn.com"
          )
          
          override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
              setupVpn()
              startDnsServer()
              return START_STICKY
          }
          
          private fun setupVpn() {
              val builder = Builder()
              builder.addAddress("10.0.0.2", 32)
              builder.addRoute("0.0.0.0", 0)
              builder.addDnsServer("127.0.0.1") // DNS פנימי מקומי
              builder.setSession("חסימת DNS")
              vpnInterface?.close()
              vpnInterface = builder.establish()
          }
          
          private fun startDnsServer() {
              dnsHandler?.stop()
              dnsHandler = DNSHandler(blockedDomains)
              dnsHandler?.start()
          }
          
          override fun onDestroy() {
              dnsHandler?.stop()
              vpnInterface?.close()
              super.onDestroy()
          }
          
          override fun onBind(intent: Intent?) = null
          

          }


          סיכום

          הפרויקט כולל שירות VPN שפונה ל־DNS פנימי שמפעיל DNSHandler עם רשימת חסימה.

          DNSHandler מקבל בקשות DNS, בודק אם הדומיין חסום, מחזיר NXDOM
          בממשק המשתמש אפשר להפעיל ולכבות את החסימה עם סיסמה.

          זה בסדר?

          אריזה לחבילת APK חתומה

          רק תגיד!

          י מנותק
          י מנותק
          יאיר דניאל
          כתב נערך לאחרונה על ידי יאיר דניאל
          #16

          @למה-באתי
          @למה-באתי כתב בבקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים:

          הבנתי אותך עכשיו — אתה רוצה פרויקט Android מלא ומוכן להעתקה ישירות ל־Android Studio, עם שירות VPN שמשלב DNS פנימי שמבצע סינון לפי רשימת חסימה, כולל רשימת דומיינים בדוגמה, ממשק משתמש להפעלה/כיבוי עם סיסמה.
          וכו' וכו'...

          פעם הבאה, בתוך ספויילר, הלך לי היד מהגלילה...

          תגובה 1 תגובה אחרונה
          2
          • I מנותק
            I מנותק
            iosi poli
            כתב נערך לאחרונה על ידי
            #17

            ליצור עם AI סטדיו. בחיים לא עם GPT (ספציפית זה).

            וזה פשוט אפליקצית VPN לחסימת דומיינים, וזה כבר קיים.

            למה באתיל תגובה 1 תגובה אחרונה
            0
            • I iosi poli

              ליצור עם AI סטדיו. בחיים לא עם GPT (ספציפית זה).

              וזה פשוט אפליקצית VPN לחסימת דומיינים, וזה כבר קיים.

              למה באתיל מנותק
              למה באתיל מנותק
              למה באתי
              מדריכים
              כתב נערך לאחרונה על ידי
              #18

              @iosi-poli כתב בבקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים:

              ליצור עם AI סטדיו. בחיים לא עם GPT (ספציפית זה).

              וזה פשוט אפליקצית VPN לחסימת דומיינים, וזה כבר קיים.

              תראה לי.
              אדרבה.
              Ai studio לא עובד בכלל באנדרואיד. ואני כעת רק עם אנדרואיד

              Y תגובה 1 תגובה אחרונה
              0
              • למה באתיל למה באתי

                @iosi-poli כתב בבקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים:

                ליצור עם AI סטדיו. בחיים לא עם GPT (ספציפית זה).

                וזה פשוט אפליקצית VPN לחסימת דומיינים, וזה כבר קיים.

                תראה לי.
                אדרבה.
                Ai studio לא עובד בכלל באנדרואיד. ואני כעת רק עם אנדרואיד

                Y מנותק
                Y מנותק
                y0508352872
                כתב נערך לאחרונה על ידי
                #19

                @למה-באתי
                עובד עובד

                I תגובה 1 תגובה אחרונה
                0
                • Y y0508352872

                  @למה-באתי
                  עובד עובד

                  I מנותק
                  I מנותק
                  iosi poli
                  כתב נערך לאחרונה על ידי
                  #20

                  @y0508352872 זה לא יקריס מכשיר אנדרואיד ביותר מ200K טוקנים?

                  למה באתיל Y 2 תגובות תגובה אחרונה
                  0
                  • I iosi poli

                    @y0508352872 זה לא יקריס מכשיר אנדרואיד ביותר מ200K טוקנים?

                    למה באתיל מנותק
                    למה באתיל מנותק
                    למה באתי
                    מדריכים
                    כתב נערך לאחרונה על ידי למה באתי
                    #21

                    @iosi-poli כתב בבקשה | מחפש מישהו עם ידע באנדרואיד סטודיו לצורך עבודה קטנה לזיכוי הרבים:

                    @y0508352872 זה לא יקריס מכשיר אנדרואיד ביותר מ200K טוקנים?

                    איטי לעלה. ונתקע מלא - גם במכשיר עם 8 ג'יגה ראם

                    תגובה 1 תגובה אחרונה
                    1
                    • I iosi poli

                      @y0508352872 זה לא יקריס מכשיר אנדרואיד ביותר מ200K טוקנים?

                      Y מנותק
                      Y מנותק
                      y0508352872
                      כתב נערך לאחרונה על ידי
                      #22

                      @iosi-poli לא יודע לי זה עבד

                      I תגובה 1 תגובה אחרונה
                      0
                      • Y y0508352872

                        @iosi-poli לא יודע לי זה עבד

                        I מנותק
                        I מנותק
                        iosi poli
                        כתב נערך לאחרונה על ידי
                        #23

                        @y0508352872 כמה ראם יש לך?

                        תגובה 1 תגובה אחרונה
                        0

                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • חוקי הפורום
                        • פופולרי
                        • לא נפתר
                        • משתמשים
                        • חיפוש גוגל בפורום
                        • צור קשר