njs_android_shortcut.html 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  6. <meta name="HandheldFriendly" content="true"/>
  7. <meta name="MobileOptimized" content="320"/>
  8. <title>Hello H5+</title>
  9. <script type="text/javascript" src="../js/common.js"></script>
  10. <script type="text/javascript">
  11. /*
  12. * 首先是供参考对比的Android源代码,用Android的java代码创建手机桌面快捷方式
  13. *
  14. import android.content.Intent;
  15. import android.graphics.BitmapFactory;
  16. import android.graphics.Bitmap;
  17. import android.app.Activity;
  18. // 获取主Activity
  19. Activity main = this;
  20. // 创建快捷方式意图
  21. Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
  22. // 设置快捷方式的名称
  23. shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloH5+");
  24. // 设置不可重复创建
  25. shortcut.putExtra("duplicate",false);
  26. // 设置快捷方式图标
  27. Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/icon.png");
  28. shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
  29. // 设置快捷方式启动执行动作
  30. Intent action = new Intent(Intent.ACTION_MAIN);
  31. action.setComponent( main.getComponentName() );
  32. shortcut.putExtra( Intent.EXTRA_SHORTCUT_INTENT, action );
  33. // 广播创建快捷方式
  34. context.sendBroadcast(shortcut);
  35. */
  36. /*
  37. * 如下开始是HTML5plus的js代码,演示如何通过js桥技术调用Android的原生api,从而完成手机桌面快捷方式创建。
  38. */
  39. var Intent=null,BitmapFactory=null;
  40. var main=null;
  41. // H5 plus事件处理
  42. function plusReady(){
  43. if ( plus.os.name == "Android" ) {
  44. // 导入要用到的类对象
  45. Intent = plus.android.importClass("android.content.Intent");
  46. BitmapFactory = plus.android.importClass("android.graphics.BitmapFactory");
  47. // 获取主Activity
  48. main = plus.android.runtimeMainActivity();
  49. }
  50. }
  51. if(window.plus){
  52. plusReady();
  53. }else{
  54. document.addEventListener("plusready",plusReady,false);
  55. }
  56. // DOMContentLoaded事件处理
  57. var _domReady=false;
  58. document.addEventListener("DOMContentLoaded",function(){
  59. eStart = document.getElementById( "start" );
  60. },false);
  61. /**
  62. * 创建桌面快捷方式
  63. */
  64. function createShortcut(){
  65. // 创建快捷方式意图
  66. var shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
  67. // 设置快捷方式的名称
  68. shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "HelloH5+");
  69. // 设置不可重复创建
  70. shortcut.putExtra("duplicate",false);
  71. // 设置快捷方式图标
  72. var iconPath = plus.io.convertLocalFileSystemURL("_www/icon.png"); // 将相对路径资源转换成系统绝对路径
  73. var bitmap = BitmapFactory.decodeFile(iconPath);
  74. shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON,bitmap);
  75. // 设置快捷方式启动执行动作
  76. var action = new Intent(Intent.ACTION_MAIN);
  77. //action.setComponent(main.getComponentName());
  78. action.setClassName(main.getPackageName(), 'io.dcloud.PandoraEntry');
  79. shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,action);
  80. // 广播创建快捷方式
  81. main.sendBroadcast(shortcut);
  82. outSet( "桌面快捷方式已创建完成!" );
  83. }
  84. /*
  85. * 供参考对比的Android源代码,用Android的java代码删除手机桌面快捷方式
  86. *
  87. * // 获取主Activity
  88. * Activity main = this;
  89. * // 创建快捷方式意图
  90. * Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
  91. * // 设置快捷方式的名称
  92. * shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,"HelloH5+");
  93. * // 设置快捷方式启动执行动作
  94. * Intent action = new Intent(Intent.ACTION_MAIN);
  95. * action.setComponent(main.getComponentName());
  96. * shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,action);
  97. * // 广播删除快捷方式
  98. * main.sendBroadcast(shortcut);
  99. */
  100. /*
  101. * 删除桌面快捷方式
  102. */
  103. function deleteShortcut(){
  104. // 创建快捷方式意图
  105. var shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
  106. // 设置快捷方式的名称
  107. shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,"HelloH5+");
  108. // 设置快捷方式启动执行动作
  109. var action = new Intent(Intent.ACTION_MAIN);
  110. //action.setComponent(main.getComponentName());
  111. action.setClassName(main.getPackageName(), 'io.dcloud.PandoraEntry');
  112. shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,action);
  113. // 广播创建快捷方式
  114. main.sendBroadcast(shortcut);
  115. outSet( "桌面快捷方式已删除!" );
  116. }
  117. </script>
  118. <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/>
  119. <style type="text/css">
  120. </style>
  121. </head>
  122. <body>
  123. <br/>
  124. <div class="button" onclick="createShortcut()">创建桌面快捷方式</div>
  125. <div class="button" onclick="deleteShortcut()">删除桌面快捷方式</div>
  126. <br/>
  127. <br/>
  128. <p class="des">
  129. 快捷方式操作是通过向Android系统发送广播的方式来实现,可能在一些定制的ROM上没有实现此类广播的处理,导致无法创建桌面快捷方式。
  130. </p>
  131. <br/>
  132. <div id="outpos"/>
  133. <div id="output">
  134. Native.JS for Android,可通过plus.android.*调用几乎所有的系统API。
  135. </div>
  136. </body>
  137. </html>