2015-03-04 2 views
2

Я создаю Android-приложение android с помощью webview и добавил класс webinterface.android отправить смс с webinterface

Вот мой код:

public class WebAppInterface { 
    Context mContext; 

    /** Instantiate the interface and set the context */ 
    WebAppInterface(Context c) { 
     mContext = c; 
    } 



    /** Show a toast from the web page */ 
    @JavascriptInterface 
    public void showToast(String toast) { 
     Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
    } 


    public void SendSMS(String msg,String PhoneNumber) { 
     Toast.makeText(mContext, 
       "sending", 
       Toast.LENGTH_LONG).show(); 

     try { 

       SmsManager smsManager = SmsManager.getDefault(); 
       smsManager.sendTextMessage(PhoneNumber, null, msg, null, null); 
     } catch(Exception e) { 
      Toast.makeText(mContext, 
        "SMS not sent, please try again.", 
        Toast.LENGTH_LONG).show(); 
      e.printStackTrace(); 

     } 

    } 
} 

MainActiviy:

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     WebView myWebView = (WebView) findViewById(R.id.webview); 
     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     myWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
     if (checkconnection()) { 
      myWebView.loadUrl("file:///android_asset/www/index.html"); 
     } else { 
      Context context = getApplicationContext(); 
      CharSequence text = "אין חיבור לאינטרנט"; 
      int duration = Toast.LENGTH_LONG; 

      Toast toast = Toast.makeText(context, text, duration); 
      toast.show(); 
     } 


    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 


    public boolean checkconnection() { 


     ConnectivityManager connMgr = (ConnectivityManager) 
       getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
     if (networkInfo != null && networkInfo.isConnected()) { 
     return true; 
     } else { 
      return false; 
     } 

    } 
} 

Форма Javascript Я называю

< Android.showToast('test') ======= это работает отлично

Android.SendSMS('0587070580','test sms') < ========== n от работы

Исключено.

+0

Привет пользователь, Добро пожаловать на Stack Overflow. В вашем вопросе не выясняется, какова фактическая проблема. Если вы можете изолировать код, ответственный и отредактировать свой вопрос, чтобы предоставить только код, напрямую связанный с проблемой, люди смогут больше помочь вам найти решение. :) –

+0

Вы дали разрешение на SMS? – Kedarnath

+0

Вы пробовали слова 'English' в SMS? – Kedarnath

ответ

1

Отсутствует аннотация @JavascriptInterface на вашем методе SendSMS().

Начиная с уровня API JELLY_BEAN_MR1 и выше, для Javascript-кода доступны только те методы, которые явно помечены этой аннотацией.

Источник: JavascriptInterface

+1

Майк! Твой мужчина! – eladcm

Смежные вопросы