我有一个对话框,可以打开showall已安装的可启动的应用程序。我在gridview中显示它们,在GridItemClick上它启动活动。
我怎样才能使它不是启动相关的应用程序,而是将它们从我的自定义对话框添加到包含启动对话框的按钮的片段以及应用程序名称? Aka为不同的应用程序制作快捷方式。
我认为相关的一点是我的ItemClick:
@Override
public void onGridItemClick(GridView g, View v, int position, long id) {
AppModel app = (AppModel) getGridAdapter().getItem(position);
if (app != null) {
Intent intent = getActivity().getPackageManager()
.getLaunchIntentForPackage(app.getApplicationPackageName());
if (intent != null) {
startActivity(intent);
}
}
}
另外,我怎么能让应用程序记住添加的内容?我不希望用户必须重新添加上次启动应用时添加的内容。
答案 0 :(得分:2)
由于您使用的是从中调用对话框的单个活动,因此该解决方案可能有效。
为您活动中所选应用的包创建静态变量,为应用名称创建一个>>
public static string app_pkg = null;
public static string app_name = null;
在您的活动中创建一个按钮,用于显示所选应用的文本,并在用户点击按钮时启动该按钮。按下应用按钮,以相同的方式点击静态。最初,隐藏该视图中的按钮。
然后使用,
@Override
public void onGridItemClick(GridView g, View v, int position, long id) {
AppModel app = (AppModel) getGridAdapter().getItem(position);
if (app != null) {
ActivityName.app_pkg = app.getApplicationPackageName().toString();
ActivityName.app_name = app.getApplicationName().toString(); //not sure about this statement for the class AppModel ( it will be something similar to this, just check
ActivityName.button_name.setText(ActivityName.app_name); //Set the button with selected app name here
// unhide your button here
//dismiss your grid here
}
}
}
在您的活动中,在该按钮的onClick方法中,启动意图
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!app_pkg.equals(null)) {
Intent lock = new Intent(getActivity(),app_pkg);
if (intent != null) {
startActivity(intent);
}
}
}
});
注意:当您有多个活动时,这是不可取的,因为静态变量可能会导致内存泄漏,因为它们不会被垃圾收集器正常收集,并且当活动到该静态变量属于哪个,被销毁。
但是由于你有一个非常简单的流程和三个这样的变量,这应该可以正常工作。