1条回答 默认 最新
小P聊技术 2022-08-02 16:19关注注意:在android studio需配置好离线打包环境
uni-app端,将底下两个方法放入methods
nativeJs(successCallback, errorCallback) { return plus.bridge.exec("bridge", "goMainActivity", [plus.bridge.callbackId(typeof successCallback === 'function' ? successCallback : null, typeof errorCallback === 'function' ? errorCallback : null)]); }, openLockSelect(){ this.nativeJs(res => { uni.showToast({ title: res, icon: 'none', duration: 3000, mask: false }); }, fail => { }); },android studio端
1.在dcloud_properties.xml添加(注意name与value的意思)
<feature name="bridge" value="com.coral3.helmet.raw.BridgeForUniApp"/>2.BridgeForUniApp.java文件代码如下:
package com.coral3.helmet.raw; import android.content.Intent; import org.json.JSONArray; import io.dcloud.common.DHInterface.IWebview; import io.dcloud.common.DHInterface.StandardFeature; public class BridgeForUniApp extends StandardFeature { public void goMainActivity(IWebview pWebview, JSONArray arr){ Intent intent = new Intent(pWebview.getContext(), MainActivity.class); intent.putExtra("CallBackID", arr.optString(0)); pWebview.getContext().startActivity(intent); } }3.MainActivity代码如下(注意核心方法toUniAppByParams)
`package com.coral3.helmet.raw; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.os.Bundle; import android.os.Vibrator; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.coral3.helmet.R; import java.util.ArrayList; import io.dcloud.common.DHInterface.IWebview; import io.dcloud.common.util.JSUtil; import io.dcloud.feature.internal.sdk.SDK; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView tvBack, openLockSuccess; private ImageView ivBtn; private View loadingView; private ViewGroup contentView; private Vibrator vibrator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBar actionBar = getSupportActionBar(); if(actionBar != null) actionBar.hide(); setContentView(R.layout.activity_main); initViews(); initListener(); startLoading(); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); runOnUiThread(new Runnable() { @Override public void run() { stopLoading(); openLockSuccess.setVisibility(View.VISIBLE); Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_SHORT).show(); vibrator.vibrate(2000); } }); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } private void initViews(){ tvBack = findViewById(R.id.tv_back); ivBtn = findViewById(R.id.iv_back); openLockSuccess = findViewById(R.id.tv_lock_open_success); openLockSuccess.setVisibility(View.GONE); contentView = findViewById(android.R.id.content); vibrator = (Vibrator) MainActivity.this.getSystemService(Context.VIBRATOR_SERVICE); } private void initListener(){ tvBack.setOnClickListener(this); ivBtn.setOnClickListener(this); } @Override public void onClick(View view) { toUniAppByParams("lys"); } public void startLoading() { if (loadingView == null) { loadingView = LayoutInflater.from(this).inflate(R.layout.view_loading, null, false); contentView.addView(loadingView); Log.d("yue-tag", "startLoading"); } else { loadingView.setVisibility(View.VISIBLE); } } public void stopLoading() { if (loadingView != null) { loadingView.setVisibility(View.GONE); } } private void toUniAppByParams(String params){ ArrayList<IWebview> weblist = SDK.obtainAllIWebview("__UNI__3333333"); for(int i = 0; i < weblist.size(); i ++){ if(weblist.get(i).getOriginalUrl() != null){ JSUtil.execCallback(weblist.get(i),getIntent().getStringExtra("CallBackID"), params, JSUtil.OK,false); } } finish(); } }` 评论 打赏 举报解决 1无用 6