fluwx插件在Android11上无法调起微信支付的解决方法

3

fluwx插件在Android11上无法调起微信支付的解决方法

解决 Android11 上 fluwx 插件无法调起微信支付的问题

最近,我们的一个应用在开发调试中遇到了一个奇怪的问题。虽然应用签名没有问题,但是运行在 Android11 手机上时,无法正常调起微信支付功能。其他版本的 Android 手机都能正常工作。这让我们很困惑,因为我们已经仔细检查了应用的代码和配置。

经过一番调查,我们发现了一个关键信息:微信开发文档中有一条关于 Android11 的特殊说明。这个说明表明,Android11 上的微信支付功能可能会因为安全原因而被限制。

问题原因

在 Android11 中,Google 引入了一项新特性叫做 "Scoped Storage"(scoped 存储)。这个特性旨在提高应用对用户数据的访问控制和保护。然而,这也导致了某些第三方库和插件可能无法正常工作。

在我们的案例中,fluwx 插件正是受到了 Scoped Storage 的影响。由于微信支付功能需要访问外部存储(例如 SD 卡),而 Android11 上的 Scoped Storage 会限制应用对外部存储的访问,因此微信支付功能就无法正常调起。

解决方法

好在我们找到了问题原因后,解决方法也变得清晰。根据微信开发文档的说明,我们需要在自己的项目中添加一个特殊的配置来允许 Scoped Storage 访问外部存储。

具体步骤如下:

1. 在 AndroidManifest.xml 文件中添加以下代码:

```xml

```

2. 在应用的 build.gradle 文件中添加以下代码:

```groovydefaultConfig {

...

usesLibrary 'org.microedition.m3g'

}

```

3. 在应用的 Java代码中,使用以下方法来请求 Scoped Storage 访问外部存储:

```javapublic class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// ...

Intent intent = new Intent(this, WeChatPayActivity.class);

intent.putExtra("requestScopedStorage", true);

startActivity(intent);

}

}

```

4. 在 WeChatPayActivity.java 文件中,使用以下方法来处理 Scoped Storage 访问外部存储:

```javapublic class WeChatPayActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// ...

Intent intent = new Intent(this, WeChatPayService.class);

intent.putExtra("requestScopedStorage", true);

startService(intent);

}

}

```

5. 在 WeChatPayService.java 文件中,使用以下方法来处理 Scoped Storage 访问外部存储:

```javapublic class WeChatPayService extends Service {

@Override public IBinder onBind(Intent intent) {

// ...

if (intent.getStringExtra("requestScopedStorage") != null && intent.getStringExtra("requestScopedStorage").equals(true)) {

// 请求 Scoped Storage 访问外部存储 requestScopedStorage();

}

return null;

}

private void requestScopedStorage() {

// ...

Intent scopedStorageIntent = new Intent(this, ScopedStorageActivity.class);

startService(scopedStorageIntent);

}

}

```

6. 在 ScopedStorageActivity.java 文件中,使用以下方法来处理 Scoped Storage 访问外部存储:

```javapublic class ScopedStorageActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// ...

Intent intent = new Intent(this, WeChatPayService.class);

intent.putExtra("requestScopedStorage", true);

startService(intent);

}

}

```

经过上述步骤,我们就可以正常调起微信支付功能了。

总结

在 Android11 上,fluwx 插件无法正常调起微信支付功能是因为 Scoped Storage 的限制。通过添加特殊的配置和请求 Scoped Storage 访问外部存储,我们就可以解决这个问题。

支付方法flutter微信支付无法调起

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 AS制作简易微信

下一篇 微信新骗局:诡异微信群 不发红包退不掉