MiniInitConfig config = builder.verifyPkg(false)//忽略包名校验.build();





android {defaultConfig {javaCompileOptions {annotationProcessorOptions {//配置模块名:开发者自己定义唯一名称,模块名遵循android类名定义规范arguments = [tcmppModuleName: "Demo"]}}}}
@ProxyService(proxy = MiniConfigProxy.class)public class MiniConfigProxyImpl extends MiniConfigProxy {@Overridepublic MiniInitConfig buildConfig() {MiniInitConfig.Builder builder = new MiniInitConfig.Builder();//将上面定义的所有module都进行注册,registerModule参数值与上面tcmppModuleName定义的保持一致return builder



/*** 返回胶囊更多面板的按钮,扩展按钮的ID需要设置为[100, 200]这个区间中的值,否则,添加无效* 注:此方法在小程序进程调用* @param builder* @return*/public ArrayList<MoreItem> getMoreItems(MoreItemList.Builder builder){builder.addDebug("调试", icon)//设置控制面板调试按钮return builder.build();}


public class TCMPPDemoApplication extends Application@Overridepublic void onCreate() {super.onCreate();if (TmfMiniSDK.isMiniProcess(this)) {// 小程序进程,跳过第三方框架初始化}}}
public class TCMPPDemoApplication extends Application {@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(base);sApp = this;// com.tencent.tmfmini.sdk.launcher.DFMWebViewCompat;DFMWebViewCompat.setDataDirectorySuffix(this);}}
<style name="MyMiniApp" parent="MiniApp"><!--通过windowDisablePreview设置,打开窗口预览--><item name="android:windowDisablePreview">false</item><!--通过windowBackground设置您的预览背景--><item name="android:windowBackground">#FF0000</item></style>
<activitytools:replace="android:theme"android:name="com.tencent.tmfmini.sdk.ui.MiniActivity1"android:theme="@style/MyMiniApp" /><activitytools:replace="android:theme"android:name="com.tencent.tmfmini.sdk.ui.MiniActivity2"android:theme="@style/MyMiniApp"/><activitytools:replace="android:theme"android:name="com.tencent.tmfmini.sdk.ui.MiniActivity3"android:theme="@style/MyMiniApp" /><activitytools:replace="android:theme"android:name="com.tencent.tmfmini.sdk.ui.MiniActivity4"android:theme="@style/MyMiniApp"/><activitytools:replace="android:theme"android:name="com.tencent.tmfmini.sdk.ui.MiniActivity5"android:theme="@style/MyMiniApp" /><activitytools:replace="android:theme"android:name="com.tencent.tmfmini.sdk.ui.MiniActivity6"android:theme="@style/MyMiniApp" />
@ProxyService(proxy = MiniConfigProxy.class)public class MiniConfigProxyImpl extends MiniConfigProxy {@Overridepublic MiniInitConfig buildConfig() {MiniInitConfig.Builder builder = new MiniInitConfig.Builder();return builder.configAssetName("tcsas-android-configuration.json").deviceUID(ModuleApplet.D_UID)//设置自定义设备 ID.build();}}
/*** 设置账号信息** @param userId*/public static void setUserId(String userId)
TmfMiniSDK.setUserId("xxxxx");
public void startMiniApp(String appid) {//创建小程序启动参数MiniStartOptions miniStartOptions = new MiniStartOptions();//将 isSingleTask 变量设置为 true,保证小程序单任务运行miniStartOptions.isSingleTask = true;TmfMiniSDK.startMiniApp(activity, appid, MiniScene.LAUNCH_SCENE_SEARCH, MiniApp.TYPE_ONLINE, miniStartOptions);}
@JsEvent("mockPayment")public void mockPayment(final RequestEvent req) {Activity activity = mMiniAppContext.getAttachedActivity();if (activity.isFinishing()) {req.fail("app activity already finished");return;}try {//mock payment default test password 666666JSONObject mockPayData = mockPayData();PaymentManager.g().gotoPayPage(activity, mMiniAppContext, mockPayData, (res, data) -> {QMLog.d("mockPayment", "result: " + data + "; success: " + res);if (res) {req.ok(data);}else {req.fail("pay failed");}});} catch (JSONException e) {req.fail("create mock pay data failed");}}
public class PaymentManager {...//Enter the order payment pageprivate void gotoPayPage(Activity activity, IMiniAppContext miniAppContext, JSONObject checkRet, AsyncResult result) {activity.runOnUiThread(() -> {String fee = checkRet.optString("actualAmount");double paymentValue = Double.parseDouble(fee) / 10000;Intent intent = new Intent(activity, PaymentMethodActivity.class);intent.setAction(Intent.ACTION_VIEW);intent.putExtra("totalFee", paymentValue);intent.putExtra("rawData", checkRet.toString());activity.startActivity(intent);paymentRequest = new PaymentRequest(miniAppContext, checkRet, result, paymentValue);Log.e("TAG", "payment request " + this.hashCode());});}}
public class LoginDialogFragment extends DialogFragment {private String mMiniAppName;private AuthListener mAuthListener;//Used to set login authorization, listen for callbackspublic void setAuthListener(AuthListener authListener) {mAuthListener = authListener;}//...Initialize page and parameters@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {btnAgree.setOnClickListener(v -> {// Handle agree button click// Complete login and authorization operations, and return the usernameif (mAuthListener != null) {mAuthListener.onAuthCallback(true, "Super app user");}dismiss();});Button btnRefuse = dialog.findViewById(R.id.btn_refuse);btnRefuse.setOnClickListener(v -> {// Handle refuse button clickif (mAuthListener != null) {mAuthListener.onAuthCallback(false, null);}dismiss();});return dialog;}public interface AuthListener {void onAuthCallback(boolean isAuth, String userName);}}
@JsEvent("mockLogin")public void mockLogin(final RequestEvent req) {Activity activity = mMiniAppContext.getAttachedActivity();if (activity.isFinishing()) {req.fail("app activity already finished");return;}try {JSONObject jsonObject = new JSONObject(req.jsonParams).optJSONObject("data");if (jsonObject == null) {req.fail("ill params");return;}String miniAppName = jsonObject.optString("miniAppName");LoginDialogFragment loginDialogFragment = LoginDialogFragment.newInstance(miniAppName);loginDialogFragment.setAuthListener((isAuth, userName) -> {JSONObject result = new JSONObject();try {result.put("isAuth", isAuth);result.put("userName", userName);} catch (JSONException e) {req.fail("auth result illegal params");}req.ok(result);});loginDialogFragment.show(activity.getFragmentManager(), "login");} catch (JSONException e) {req.fail("illegal params");}}
@JsEvent("mockRunMainAppPage")public void mockRunMainAppPage(final RequestEvent req) {Activity activity = mMiniAppContext.getAttachedActivity();if (activity.isFinishing()) {req.fail("app activity already finished");return;}try {JSONObject params = new JSONObject(req.jsonParams);String data = params.optString("data");SameTaskStackActivity.start(activity, data, mMiniAppInfo.appId, mMiniAppInfo.verType);} catch (JSONException e) {req.fail("illegal params");return;}req.ok();}
public class SameTaskStackActivity extends BaseActivity {//...other params infopublic static void start(Activity activity, String data, String miniAppId, int verType) {Intent intent = new Intent(activity, SameTaskStackActivity.class);intent.putExtra(EXTRA_TITLE, data);intent.putExtra(EXTRA_MINI_APP_ID, miniAppId);intent.putExtra(EXTRA_VER_TYPE, verType);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);activity.startActivity(intent);}@Overridepublic void onBackPressed() {super.onBackPressed();//Monitor the back event and use the backToMiniApp interface to return to the mini program page//The miniAppId and verType parameters can be obtained through the MiniAppInfo object in BaseJsPluginTmfMiniSDK.backToMiniApp(mMiniAppId, mVerType);}}
文档反馈