html 通过 native.js 调用原生 android API 代码段总结

本篇文章是 native.js 系列的第三篇,都是以前做 Hybrid App 项目的重新总结,关于这部分DCloud 官网也有代码示例,地址在这儿,但是我发现有的代码段运行后是不能起作用的,这里就把我需要用到的几个模块重新修改了一下,如下:

调用Android SharePreference数据

 function getDataFromAndroid(){
      var Toast = plus.android.importClass("android.widget.Toast");
      var Context = plus.android.importClass("android.content.Context");
      var SharedPreferences = plus.android.importClass("android.content.SharedPreferences");
      var sp = mainActivity.getSharedPreferences("data",Context.MODE_PRIVATE);
      var value1 = plus.android.invoke(sp,"getString","data1","");
      var value2 = plus.android.invoke(sp,"getString","data2","");
      var toast = Toast.makeText(mainActivity,"data1:"+value1+"\n"+"data2:"+value2,Toast.LENGTH_SHORT);
      toast.show();
 }
复制代码

调用Android本地分享

function shareContent(){
    var Intent = plus.android.importClass("android.content.Intent");
    var shareIntent = new Intent(Intent.ACTION_SEND);
    plus.android.invoke(shareIntent,"setType","text/plain");
    plus.android.invoke(shareIntent,"putExtra",Intent.EXTRA_TEXT,"this is my share text");
    <!--shareIntent.setType("text/plain");-->
    <!--shareIntent.putExtra(Intent.EXTRA_TEXT,"this is my share text");-->
    mainActivity.startActivity(Intent.createChooser(shareIntent,"share to..."));
}
复制代码

直接拨打电话

function callPhone(){
  var Intent = plus.android.importClass("android.content.Intent");
  var Uri = plus.android.importClass("android.net.Uri");
  var uri = Uri.parse("tel:10086");
  var callIntent = new Intent("android.intent.action.CALL",uri);
  mainActivity.startActivity(callIntent);
}
复制代码

获取手机内存信息

function getMemorySize() {
    var Toast = plus.android.importClass("android.widget.Toast");
    var Context = plus.android.importClass("android.content.Context");
    var ActivityManager = plus.android.importClass("android.app.ActivityManager");
    var memoryInfo = new ActivityManager.MemoryInfo();
    var activityService = mainActivity.getSystemService(Context.ACTIVITY_SERVICE);
    activityService.getMemoryInfo(memoryInfo);
    var availRAMSize = memoryInfo.plusGetAttribute("availMem");
    var toast = Toast.makeText(mainActivity,"可用内存:"+availRAMSize,Toast.LENGTH_SHORT);
    toast.show();
}
复制代码

打开网络设置

 /*var intent = new Intent('android.settings.WIFI_SETTINGS')*/
 function openNetwork(){
     var Intent = plus.android.importClass("android.content.Intent");
     var Settings = plus.android.importClass("android.provider.Settings");
     <!--android.settings.SETTINGS和android.settings.WIRELESS_SETTINGS是同一个界面-->
     <!--var intent = new Intent('android.settings.SETTINGS');-->
     <!--用如下方式需要导入Settings包-->
     var intent = new Intent(Settings.ACTION_SETTINGS);
     mainActivity.startActivity(intent);
 }
复制代码

读取手机联系人

function readContacts(){
      var REQUESTCODE = 1000;
      var Intent = plus.android.importClass('android.content.Intent');
      var ContactsContract = plus.android.importClass('android.provider.ContactsContract');
      var intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
      mainActivity.startActivityForResult(intent, REQUESTCODE);

      mainActivity.onActivityResult = function(requestCode, resultCode, data) {
          if (REQUESTCODE == requestCode) {
              var phoneNumber = null;
              var resultString = "";
              var context = mainActivity;
              plus.android.importClass(data);
              var contactData = data.getData();
              var resolver = context.getContentResolver();
              plus.android.importClass(resolver);
              var cursor = resolver.query(contactData, null, null, null, null);
              plus.android.importClass(cursor);
              cursor.moveToFirst();
              var s_ret;
              var givenName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
              s_ret = givenName;
              var contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
              var pCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
               null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,
               null, null);
              while (pCursor.moveToNext()) {
               phoneNumber =   pCursor.getString( pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
               s_ret += '\n' + phoneNumber;
              }
              alert(s_ret);
              cursor.close();
              pCursor.close();
          }
      };
  }
复制代码

上面都是一个个的函数,你只要在 html 中 button 点击事件调用如上方法即可

转载于:https://juejin.im/post/5a45d5eaf265da43231b4ad6

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值