commit initial app
This commit is contained in:
parent
deeff3bd2d
commit
aa1419e8bf
4 changed files with 138 additions and 42 deletions
22
app/AndroidManifest.xml
Normal file
22
app/AndroidManifest.xml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="app.persistence"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
<uses-sdk android:minSdkVersion="30"
|
||||||
|
android:targetSdkVersion="33"/>
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NOTIFICATIONS"/>
|
||||||
|
<application android:label="persistence" android:icon="@drawable/appicon">
|
||||||
|
<activity android:name="app.persistence.AppActivity"
|
||||||
|
android:exported="true"
|
||||||
|
android:configChanges="orientation|screenSize|keyboardHidden"
|
||||||
|
android:label="persistence">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
</manifest>
|
7
app/app-config.sh
Normal file
7
app/app-config.sh
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
APP_NAME='persistence'
|
||||||
|
APP_PACKAGE='app.persistence'
|
||||||
|
APP_VERSION_SDK_TARGET='33'
|
||||||
|
APP_VERSION_SDK_MIN='30'
|
||||||
|
APP_PERMISSIONS='<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NOTIFICATIONS"/>'
|
|
@ -4,50 +4,114 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
||||||
</head>
|
</head>
|
||||||
<style>
|
<script>
|
||||||
@keyframes wobble {
|
|
||||||
0% {
|
function sleepit(ms) {
|
||||||
transform: scale(0.1);
|
return new Promise((resolve) => {
|
||||||
/* transform: rotate(-5deg);
|
setTimeout(() => {
|
||||||
transform: rotate(5deg);*/
|
resolve(1);
|
||||||
opacity:0.0
|
}, ms);
|
||||||
}
|
});
|
||||||
22% {
|
|
||||||
transform: scale(2.0);
|
|
||||||
/*/ transform: rotate(-5deg);*/
|
|
||||||
opacity:1.0
|
|
||||||
}
|
|
||||||
99% {
|
|
||||||
transform: scale(1.0);
|
|
||||||
/*/ transform: rotate(-5deg);*/
|
|
||||||
opacity:0.0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
function divMessage(html){
|
||||||
<body style=" background: radial-gradient(#111, #000);">
|
var div = document.createElement('div');
|
||||||
<h1> SUPER</h1>
|
div.innerHTML=html;
|
||||||
<script>
|
document.body.appendChild(div);
|
||||||
var count=0;
|
div.scrollIntoView({ behavior: 'smooth'});
|
||||||
window.addEventListener("load",()=>{
|
}
|
||||||
function insert(){
|
|
||||||
count++;
|
(async function webviewprogram(){
|
||||||
var h2 = document.createElement("h2");
|
var port;
|
||||||
h2.textContent=" "+ count + ". javascript works"
|
var resolves = [];
|
||||||
h2.style.color="#"+Math.random().toString(16).slice(3,9);
|
function setupMessage(){
|
||||||
// h2.style.transform="rotate("+((Math.random()*3600)|0)/10+"deg)";
|
divMessage("starting SetupMessage()");
|
||||||
h2.style.fontSize=""+Math.random()*20+"pt";
|
try{
|
||||||
h2.style.textAlign="center";
|
|
||||||
h2.style.animation="wobble 5s ease-in-out infinite alternate"
|
return new Promise((resolve) => {
|
||||||
document.body.insertBefore(h2,document.body.children[(document.body.children.length*Math.random())|0])
|
window.addEventListener('message',(e)=>{
|
||||||
// h2.scrollIntoView({"behavior":"smooth"});
|
if(e.data=="init-from-java" && ! port){
|
||||||
if(document.body.children.length>15){
|
divMessage('INIT');
|
||||||
document.body.children[(document.body.children.length*Math.random())|0].remove();
|
port = e.ports[0];
|
||||||
|
port.onmessage = function (ee) {
|
||||||
|
divMessage('AAport.onmessage='+ee.data);
|
||||||
|
var response = JSON.parse(ee.data);
|
||||||
|
divMessage('response.resolveIndex'+response.resolveIndex);//AAport.onmessage='+ee.data);
|
||||||
|
var localresolve = resolves[response.resolveIndex];
|
||||||
|
divMessage(typeof localresolve)
|
||||||
|
|
||||||
|
localresolve(response);
|
||||||
}
|
}
|
||||||
setTimeout(()=>{window.requestAnimationFrame(insert);},100);
|
resolve()
|
||||||
|
|
||||||
}
|
}
|
||||||
insert();
|
divMessage('message='+e.data);
|
||||||
|
},true);
|
||||||
|
});
|
||||||
|
} catch(error){
|
||||||
|
divMessage('setuperror');
|
||||||
|
divMessage('setuperror='+error.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function doTest(){
|
||||||
|
divMessage('doTest');
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
divMessage('resolves.length'+resolves.length);
|
||||||
|
resolves.push(resolve);
|
||||||
|
divMessage('after push resolves.length'+resolves.length);
|
||||||
|
port.postMessage('{"function":"test","resolveIndex":"'+(resolves.length-1)+'"}');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// function doLs(path){
|
||||||
|
// divMessage('doLs');
|
||||||
|
// return new Promise((resolve) => {
|
||||||
|
// divMessage('resolves.length'+resolves.length);
|
||||||
|
// resolves.push(resolve);
|
||||||
|
// divMessage('after push resolves.length'+resolves.length);
|
||||||
|
// port.postMessage('{"function":"ls","path":"'+path+'","resolveIndex":"'+(resolves.length-1)+'"}');
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// function doCat(file){
|
||||||
|
// return new Promise((resolve) => {
|
||||||
|
// resolves.push(resolve);
|
||||||
|
// port.postMessage('{"function":"cat","resolveIndex":"'+resolves.length+'"}');
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
function doLoadedWait(){
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
window.addEventListener('load',()=>{
|
||||||
|
resolve();
|
||||||
},false);
|
},false);
|
||||||
</script>
|
});
|
||||||
</body>
|
}
|
||||||
|
window.addEventListener('load',()=>{
|
||||||
|
divMessage('JAVASCRIPT WORKS');
|
||||||
|
},false);
|
||||||
|
await doLoadedWait();
|
||||||
|
// await sleepit(2000);
|
||||||
|
// divMessage('awaited 2000');
|
||||||
|
// await sleepit(2000);
|
||||||
|
// divMessage('awaited again 2000');
|
||||||
|
// divMessage("before.setup 1");
|
||||||
|
divMessage('before.setup');
|
||||||
|
await setupMessage();
|
||||||
|
divMessage('setup');
|
||||||
|
async function mapDoTest(){
|
||||||
|
divMessage("doTest ");
|
||||||
|
var reply = await doTest();
|
||||||
|
divMessage("reply was",JSON.stringify(reply));
|
||||||
|
// divMessage("reply.result.length"+reply.result.length);
|
||||||
|
// reply.result.forEach((info)=>{
|
||||||
|
// divMessage(JSON.stringify(info));
|
||||||
|
// // divMessage(info.info);//reply.result.length"+reply.result.length);
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
await mapDoTest();
|
||||||
|
divMessage("done");
|
||||||
|
// for(let file of DCIM.result){
|
||||||
|
// divMessage("filename");
|
||||||
|
// });
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
<body>
|
||||||
|
<input type=text />
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -6,4 +6,7 @@
|
||||||
<path
|
<path
|
||||||
android:pathData="M95 50A45 45 0 0 1 5 50A45 45 0 0 1 95 50Z"
|
android:pathData="M95 50A45 45 0 0 1 5 50A45 45 0 0 1 95 50Z"
|
||||||
android:fillColor="#FF0000" />
|
android:fillColor="#FF0000" />
|
||||||
|
<path
|
||||||
|
android:pathData="M75 50A25 25 0 0 1 25 50A25 25 0 0 1 75 50Z"
|
||||||
|
android:fillColor="#FFFF00" />
|
||||||
</vector>
|
</vector>
|
||||||
|
|
Loading…
Add table
Reference in a new issue