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

تبدیل یک کد جاوا به B4a


pertican2010

سوال

سلام به دوستان 

کدزیر تبدیلش به B4a چی میشه کسی می دونه؟

public static boolean sendSMS(Context ctx, int simID, String toNum, String centerNum, String smsText, PendingIntent sentIntent, PendingIntent deliveryIntent) {
        String name;

        try {
           name = "isms";
            Method method = Class.forName("android.os.ServiceManager").getDeclaredMethod("getService", String.class);
            method.setAccessible(true);
            Object param = method.invoke(null, name);

            method = Class.forName("com.android.internal.telephony.ISms$Stub").getDeclaredMethod("asInterface", IBinder.class);
            method.setAccessible(true);
            Object stubObj = method.invoke(null, param);
            if (Build.VERSION.SDK_INT < 18) {
                method = stubObj.getClass().getMethod("sendText", String.class, String.class, String.class, PendingIntent.class, PendingIntent.class);
                method.invoke(stubObj, toNum, centerNum, smsText, sentIntent, deliveryIntent);
            } else {
                method = stubObj.getClass().getMethod("sendText", String.class, String.class, String.class, String.class, PendingIntent.class, PendingIntent.class);
                method.invoke(stubObj, ctx.getPackageName(), toNum, centerNum, smsText, sentIntent, deliveryIntent);
            }

            return true;
        } catch (ClassNotFoundException e) {
            Log.e("apipas", "ClassNotFoundException:" + e.getMessage());
        } catch (NoSuchMethodException e) {
            Log.e("apipas", "NoSuchMethodException:" + e.getMessage());
        } catch (InvocationTargetException e) {
            Log.e("apipas", "InvocationTargetException:" + e.getMessage());
        } catch (IllegalAccessException e) {
            Log.e("apipas", "IllegalAccessException:" + e.getMessage());
        } catch (Exception e) {
            Log.e("apipas", "Exception:" + e.getMessage());
        }
        return false;
    }

تا جایی که می دونم با باید از Reflector استفاده کرد

http://www.b4x.com/android/help/reflection.html

 

یه نمونه کد

http://www.b4x.com/android/forum/threads/simulate-long-press-home-button-to-open-recent-apps.31066/

 

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

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

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

سلام علیکم

 

کتابخانه JavaObject و Reflection  رو تیک بزنید.

این کد رو به یه فضای خالی اضافه کنید بصورت جاوا:

#if java
import java.lang.reflect.Method;
import android.content.Context;
import android.app.PendingIntent;
import android.os.IBinder;
import android.os.Build;
import android.util.Log;
import java.lang.reflect.InvocationTargetException;

public static boolean sendSMS(Context ctx, int simID, String toNum, String centerNum, String smsText, PendingIntent sentIntent, PendingIntent deliveryIntent) {
        String name;

        try {
           name = "isms";
            Method method = Class.forName("android.os.ServiceManager").getDeclaredMethod("getService", String.class);
            method.setAccessible(true);
            Object param = method.invoke(null, name);

            method = Class.forName("com.android.internal.telephony.ISms$Stub").getDeclaredMethod("asInterface", IBinder.class);
            method.setAccessible(true);
            Object stubObj = method.invoke(null, param);
            if (Build.VERSION.SDK_INT < 18) {
                method = stubObj.getClass().getMethod("sendText", String.class, String.class, String.class, PendingIntent.class, PendingIntent.class);
                method.invoke(stubObj, toNum, centerNum, smsText, sentIntent, deliveryIntent);
            } else {
                method = stubObj.getClass().getMethod("sendText", String.class, String.class, String.class, String.class, PendingIntent.class, PendingIntent.class);
                method.invoke(stubObj, ctx.getPackageName(), toNum, centerNum, smsText, sentIntent, deliveryIntent);
            }

            return true;
        } catch (ClassNotFoundException e) {
            Log.e("apipas", "ClassNotFoundException:" + e.getMessage());
        } catch (NoSuchMethodException e) {
            Log.e("apipas", "NoSuchMethodException:" + e.getMessage());
        } catch (InvocationTargetException e) {
            Log.e("apipas", "InvocationTargetException:" + e.getMessage());
        } catch (IllegalAccessException e) {
            Log.e("apipas", "IllegalAccessException:" + e.getMessage());
        } catch (Exception e) {
            Log.e("apipas", "Exception:" + e.getMessage());
        }
        return false;
    }
#end if

این کدجاوا شما یه تابع داره به نام sendSMS ، برای اجرا کردنش...:

Dim j As JavaObject
j.InitializeContext
Dim ref As Reflector
j.RunMethod("sendSMS",Array(ref.GetContext,"SimId","ToNum","CenterNum","SmsText","sentIntent","deliveryIntent"))

پارامتر اولی که هیچی Context میخواست خودم دادم بهش ، اما بقیه پارامتر هارو مثل simId,ToNum و... همونطور که مشخص هست باید پرکنید.

 

این تابع یک مقدار برگشتی Boolean هم برمیگردونه که برای گرفتش میتونید اینکارو بکنید:

Dim j As JavaObject
j.InitializeContext
Dim ref As Reflector
If j.RunMethod("sendSMS",Array(ref.GetContext,"SimId","ToNum","CenterNum","SmsText","sentIntent","deliveryIntent"))=True Then
	ToastMessageShow("مقدار true برگردانده شد",True)
	Else
		ToastMessageShow("مقدار False برگدانده شد",True)
End If

این از نحوه پیاده سازش تو بیسیک. اینکه کار بکنه یا نه بستگی به کد جاوا داره...

درضن اینطور که پیداست ممکنه به دسترسی های خاصی هم نیاز داشته باشه.

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

مقدار فالس برگردونده شد یعنی مشکل داره و ارسال نشد دیگه.... اگه از ورودی ها مطمئن نیستید جایی که این کد رو پیدا کردید شاید یه مثالی زده باشه واسش.

 

درضمن چرا میخواین ازکد جاوا برای ارسال اس ام اس استفاده کنید؟؟

این تاپیکو ببینید با reflection ارسال پیامک انجام میشه شاید بدردتون بخوره...

http://answercenter.ir/topic/3702-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%BE%DB%8C%D8%A7%D9%85%DA%A9-%D8%B7%D9%88%D9%84%D8%A7%D9%86%DB%8C/

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

بایگانی شده

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

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

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