bounty还有4天到期。此问题的答案有资格获得+50声望奖励。anandyn02正在寻找一个答案从一个有信誉的来源。
在我们的flutter TV应用程序中,我们正在尝试使用DeviceApps的开放式娱乐应用程序。以下方法不会打开应用程序,尽管它已安装在设备上。
DeviceApps.openApp("com.sonyliv");
我不知道为什么索尼没有打开。
注意:请忽略触摸是不是实现到这个应用程序currently.So只有点击作品.
完整片段
import 'package:device_apps/device_apps.dart';
import 'package:flutter/material.dart';
import 'dart:typed_data';
class ListAppsPage extends StatelessWidget {
const ListAppsPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListAppsBody(),
);
}
}
class ListAppsBody extends StatefulWidget {
@override
_ListAppBodyState createState() => _ListAppBodyState();
}
class _ListAppBodyState extends State {
List listApps = [];
@override
void initState() {
super.initState();
_getApp();
}
void _getApp() async{
List _apps = await DeviceApps.getInstalledApplications(includeAppIcons: true);
for(var app in _apps){
// print(app.apkFilePath);
if(!app.packageName.contains("example")) {
var item = AppModel(
title: app.appName,
package: app.packageName,
icon: app.icon,
);
listApps.add(item);
}
}
//reloading state
setState(() {});
}
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: listApps.length,
itemBuilder: (context, int i) => Column(
children: [
ListTile(
leading: Image.memory(listApps[i].icon),
title: Text(listApps[i].title),
subtitle: Text(listApps[i].package),
onTap: (){
DeviceApps.openApp(listApps[i].package);
},
),
],
),
);
}
}
class AppModel{
final String title;
final String package;
final Uint8List icon;
AppModel({
required this.title,
required this.package,
required this.icon
});
}
1条答案
按热度按时间yyyllmsg1#
要从同一设备上的Flutter应用中打开另一个应用,您可以使用url_launcher包。首先,您需要将这个包添加到Flutter项目的pubspec.yaml文件中。您可以在dependencies下添加以下行:
然后运行flutter pub get命令下载包。
接下来,您可以使用url_launcher包,通过包标识打开其他应用。在您的示例中,SonyLIV应用程序的包标识符是com.sonyliv。使用以下代码作为示例:
main.dart
当您运行该应用程序时,它将显示一个标有“打开SonyLIV应用程序”的按钮。当您单击该按钮时,它将尝试在同一设备上打开SonyLIV应用程序(如果已安装)。如果没有安装,则会抛出异常。
请注意,您尝试打开的应用程序必须安装在设备上,代码才能正常工作。