我面临着一个关于 Android 应用程序新版本发布的问题。
场景:
我在 2 个月前(2020 年 12 月)将最初的 Flutter android 应用程序上传到 Google Play 商店,我们在那里意外添加了位置权限,即使没有使用代码。(只是在 Android 清单中添加了权限)。
现在我们提出了新版本的 flutter android 应用程序并尝试创建新的 Release 1.0.2 版本,它在提交新版本的应用程序时显示错误。
错误:修复错误以推出此版本
问题是关于我在 Play 商店上线的初始应用版本中使用的位置权限
问题需要解决:您的后台位置权限声明需要更新。
在应用程序内容中,它显示敏感应用程序权限错误
注意:在敏感的应用程序权限 - 位置权限中。它没有显示管理按钮,而是有一个位置权限声明表的选项。
我们现在不想使用位置权限。所以我们删除了位置 权限并尝试上传新的发布版本,但这个 位置权限(敏感应用程序权限)声明 一次又一次地显示错误。
我正在尝试在最新的 Flutter 升级后运行 Flutter 应用程序。
它显示以下错误
Runner[58802:2599379] [VERBOSE-1:callback_cache.cc(132)] 无法解析回调缓存,中止恢复
应用程序在本机启动画面后关闭。
在 Android 平台上它可以工作,但是当尝试将调试应用程序运行到 iOS 模拟器时,它给出了上述错误 Flutter LOG
[?] Flutter (Channel master, 1.18.0-10.0.pre, on Mac OS X 10.15.4 19E287, locale
en-GB)
• Flutter version 1.18.0-10.0.pre at /Users/harshbhavsar/flutter
• Framework revision a58d50deb1 (3 weeks ago), 2020-04-29 13:04:59 -0700
• Engine revision 2db3276573
• Dart version 2.9.0 (build 2.9.0-3.0.dev 726d3c7725)
[?] Android toolchain - develop for Android devices (Android SDK version 29.0.1)
• Android SDK at /Users/harshbhavsar/Library/Android/sdk
• Platform android-29, build-tools 29.0.1
• …Run Code Online (Sandbox Code Playgroud) 我在有状态小部件中使用 banklist。将列表传递给pageState使用 List<Bank> bankLists = this.widget.bankLists;
Que 1.为什么我gradientcolor: gradientBankCard("FFB74093","FFB74093"))在初始化程序中只能访问静态成员时出现错误?
Que 2.如何将常量数据传递给gradientBankCard方法。例如,我想传递Color.fromRGBO(220, 132, 58, 1.0)给错误的参数。一世
List<Bank> bankLists = [
Bank(
id: "1",
name: "B1",
loanAmount: "? 250000",
emi: "?11732",
intrest_rate: "11.69 % ",
processing_fee: "1.29 %",
tenure: "2 years",
gradientcolor: gradientBankCard('#e48634', '#e48634')), // //Error : Only static members can be accessed in initializers
Bank(
id: "2",
name: "B2",
loanAmount: "? 250000",
emi: "?11732",
intrest_rate: "11.69 % ",
processing_fee: "1.29 %",
tenure: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将成功的JSON字符串转换为Object。可能是我的工作方式不正确,但是我有几个与将JSON转换为对象有关的问题。
另外,我在Log中得到了这种证明。
NoSuchMethodError:类_InternalLinkedHashMap没有具有匹配参数的实例方法“ cast”。
接收者:_LinkedHashMap len:3
尝试调用:cast>()
Q1。我是否还需要在模型中强制转换该数据对象?
Q2。这是将JSON转换为Object(SignUpResponse)的最佳和简单方法。
Q3。与序列化更好吗?
响应JSON:
{
"data": {
"_id": "5bd2a59f4c59de1ac517d7bf",
"email": "fjhsd@gmail.com",
"phoneNumber": "2417874147",
"isAddressApproved": 0,
"unitNumber": "144",
"streetAddress": "sdfsddsf",
"area": "asd",
"zipCode": "112233",
"totalOrder": 0,
"todayOrder": 0,
"isPauseDelivery": false,
"vacationStartDt": null,
"vacationEndDt": null,
"defaultLiter": 1
},
"message": "New User Created",
"error": false
}
Run Code Online (Sandbox Code Playgroud)
由在线工具创建的SignUpResponse。
class SignUpResponse {
Data data;
String message;
bool error;
SignUpResponse({this.data, this.message, this.error});
SignUpResponse.fromJson(Map<String, dynamic> json) {
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
message …Run Code Online (Sandbox Code Playgroud) Android 依赖项 'com.android.support:support-media-compat' 对于编译 (26.1.0) 和运行时 (27.1.1) 类路径具有不同的版本。您应该通过 DependencyResolution 手动设置相同的版本
我在我的 flutter 应用程序中添加了插件列表
dependencies:
flutter:
sdk: flutter
connectivity:
rxdart:
validate: ^1.7.0
image_picker: ^0.4.10
shared_preferences: "^0.4.2"
firebase_auth: ^0.6.2+1
google_sign_in:
Run Code Online (Sandbox Code Playgroud)
Dart & Flutter 版本:Dart 2.1.0-dev.3.1.flutter-760a9690c2
这是我的 android 应用程序 - gradle
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") …Run Code Online (Sandbox Code Playgroud) 我在单个android项目中创建了两个模块。
应用模块(默认为我的应用模块)
和另一个添加的库模块。
现在,应用程序模块具有许多Java类。我想访问.Java class库模块中的应用程序模块。
模块应用DatabaseHelper在包xyz中有一个类
现在我想DatabaseHelper在Library模块中导入类。
DatabaseHelper 无法被android识别。
问题,
是否可以将Class从应用程序模块导入到另一个模块?
任何其他方式。
我的文件
build.gradle(应用程序)
compile project(':materialList')
Run Code Online (Sandbox Code Playgroud)
setting.gradle
include ':app', ':Library'
Run Code Online (Sandbox Code Playgroud) android android-build build.gradle android-gradle-plugin android-gradle-2.2
这是每天下午 5.15 设置闹钟的方法
我打电话setAlarm()时,我的应用程序启动第一time.App打开方法,(First Launch time)在那个时候自动Notification产生并不断射击相同的通知再次ñ再次与interval time周围2 min。
注意:生成通知不是问题。
public void setAlarm() {
alarmManager = (AlarmManager) getActivity().getSystemService(ALARM_SERVICE);
alarmIntent = new Intent(getActivity(), AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 17);
calendar.set(Calendar.MINUTE, 15);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
//alarmManager.setRepeating(AlarmManager.RTC, AlarmManager.INTERVAL_HALF_DAY, AlarmManager.INTERVAL_HALF_DAY, pendingIntent);
}
Run Code Online (Sandbox Code Playgroud)
报警服务
public class AlarmReceiver extends BroadcastReceiver {
NotificationManager notificationManager;
@Override
public void onReceive(Context context, Intent intent) {
Intent service1 = new Intent(context, …Run Code Online (Sandbox Code Playgroud) notifications android android-notifications uilocalnotification
我最初在列中的小部件列表为空。现在在“其他小部件”上单击“我正在在 _contactItems 中添加新的自定义小部件”
Column(
children: _contactItems,
)
List<Widget> _contactItems = new List<CustomWidget>();
_contactItems.add(newCustomWidget(value));
Run Code Online (Sandbox Code Playgroud)
现在假设我有 6 条记录(列中有 6 个自定义小部件)。我正在尝试删除索引记录(例如,我要删除第三条记录,然后删除第一条记录。列小部件(动态小部件)应更新为 _contactItems 中的更新setState())
现在,在CustomWidget上单击“我将从列中删除该特定的CustomWidget”。
setState(() {
_contactItems.removeAt(index);
});
Run Code Online (Sandbox Code Playgroud)
还尝试过
_contactItems.removeWhere((item) {
return item.key == _contactItems[index].key;
});
Run Code Online (Sandbox Code Playgroud) 获取从图库获取中选择的视频文件的路径NULL.如何获取视频文件的路径?在活动结果中获取URi也会给出null.将Uri转换为String也是如此Null.
Intent intent;
String selectedVideo1Path, selectedVideo2Path;
EditText e1,e2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.videos_activity);
Button button1 = (Button) findViewById(R.id.video1_btn);
Button button2 = (Button) findViewById(R.id.video2_btn);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectVideoFromGallery();
startActivityForResult(intent, 101);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectVideoFromGallery();
startActivityForResult(intent, 102);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 101) {
if (data.getData() != null) { …Run Code Online (Sandbox Code Playgroud) android android-video-player android-videoview android-ffmpeg
在这里, FFmpeg 中的新功能。我在 FFmpeg 的控制台中使用和测试。
我已经完成了 2 个视频加入交叉淡入淡出这个问题:我正在为 5 个视频合并交叉淡入淡出我刚刚完成了 90% 的合并我只需要管理 setpts=PTS-STARTPTS 看看这个请。
ffmpeg -i big_buck.mp4 -i big_buck.mp4 -i big_buck.mp4 -i big_buck.mp4 -i
big_buck.mp4 -filter_complex "[0:v]trim=0:4,setpts=PTS-
STARTPTS,fade=out:st=4:d=1:alpha=1[1]; [1:v]trim=1:4,setpts=PTS-
STARTPTS,format=yuva420p,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[2];
[2:v]trim=1:4,setpts=PTS-
STARTPTS,format=yuva420p,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[3];
[3:v]trim=1:4,setpts=PTS-
STARTPTS,format=yuva420p,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[4];
[4:v]trim=1:4,setpts=PTS-STARTPTS,format=yuva420p,fade=in:st=0:d=1:alpha=1[5];
[1][2]overlay,format=yuv420p[12]; [12][3]overlay,format=yuv420p[123]; [4]
[5]overlay,format=yuv420p[45]; [123][45]concat=n=2 [v]" -map [v] result.mp4
Run Code Online (Sandbox Code Playgroud)
****请注意,每个输入视频 big_buck.mp4 长度为 5 秒 ****。现在 在代码中看到setpts=PTS-STARTPTS如何在每个视频输入中管理它????
我也在各种论坛上看到过,但我没有找到!!!谢谢