问题描述
我在这里遇到了一些麻烦,非常感谢您的帮助! 我正在开发一个 Android 应用程序,它使用浮动小部件服务在手机上启动不同的应用程序(打开 Google、Youtube、Facebook 等)。到目前为止,用户界面和逻辑已经完成,但我在手机本身上启动实际应用程序时遇到了一些问题 - 要么会崩溃,要么根本不会启动任何东西。 以下是我用于解释我创建的用户界面的代码的一部分,它实现了 View.OnTouchListener 类 - 用于需要上下文。浮动小部件也是一个具有单独布局文件的服务。
case MotionEvent.ACTION_UP:
float gradient = params.y / params.x;
switch (checkRegion(params.x,params.y)) {
case norTH:
Log.i("","north");
launchApp("com.android.google.gm");
Log.i("","App 1 launched");
Toast.makeText(getApplicationContext(),"Launch app 1",Toast.LENGTH_SHORT).show();
break;
case SOUTH:
case EAST:
case WEST:
stopSelf();
return true;
移动完成后,指定的应用程序应该会启动,这是我写的功能:
public void launchApp(String appInfo) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
PackageManager packageManager = getApplicationContext().getPackageManager();
if (packageManager == null) {
Log.i("","null package");
return;
}
Log.i("","package is not null");
List<ResolveInfo> temp = packageManager.queryIntentActivities(intent,0);
for (ResolveInfo info : temp) {
if (info.activityInfo.packageName.equalsIgnoreCase(appInfo)) {
appLauncher(info.activityInfo.packageName,info.activityInfo.name);
break;
}
}
}
private void appLauncher(String packageName,String name) {
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
intent.setComponent(new ComponentName(packageName,name));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);
}
尽管已检查启动应用程序的意图不为空,但我在触摸完浮动小部件后无法启动应用程序。小部件完成移动后,将不会启动上述应用程序。另一方面,如果我使用 getPackageManager().getLaunchIntentForPackage(etc) 那么意图将完全为空并且应用程序将崩溃,这就是我决定使用上述代码的原因。
任何人都可以向我建议我应该怎么做才能从这样的服务启动应用程序? 非常感谢您的帮助!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)