Java 如何使用按钮单击意图打开已安装的 android 应用程序?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18937677/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to open a installed android app with a button click intent?
提问by rapsong11
Hi i'm working on a android launcher for education and I need it to be able to when the user clicks the school tools button it launches the school tools app that is installed on the device
嗨,我正在开发用于教育的 android 启动器,我需要它能够在用户单击学校工具按钮时启动安装在设备上的学校工具应用程序
Here's the code
这是代码
package com.d4a.stzh;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.content.Intent;
import com.actionbarsherlock.app.SherlockFragment;
public class FragmentTab1 extends SherlockFragment {
private Button appbtn;
private Button webbtn;
private Button toolsbttn;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Get the view from fragmenttab1.xml
View view = inflater.inflate(R.layout.fragmenttab1, container, false);
//Get the button from layout
appbtn = (Button) view.findViewById(R.id.app);
webbtn = (Button) view.findViewById(R.id.web);
toolsbttn = (Button) view.findViewById(R.id.tools);
//show all apps installed on the device
appbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FragmentTab1.this.getActivity(), MyLauncherActivity.class);
startActivity(intent);
}
});
//luanches google on the default web browser
webbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String url = "http://www.google.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
//tools button i know ths code is wrong!I need help here!
toolsbttn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FragmentTab1.this.getActivity(), MyLauncherActivity.class);
startActivity(intent);
}
});
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
setUserVisibleHint(true);
}
}
I am still new to android coding so please don't judge me
我还是 android 编码的新手,所以请不要评判我
Any help would be amazing Thanks way in advance
任何帮助都会很棒提前谢谢
Regards
问候
Rapsong11
Rapsong11
采纳答案by Daniel Bo
This code snippet should do exactly what you are trying to achieve
此代码片段应该完全符合您要实现的目标
Intent i;
PackageManager manager = getPackageManager();
try {
i = manager.getLaunchIntentForPackage("com.example.schoolToolApp");
if (i == null)
throw new PackageManager.NameNotFoundException();
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
} catch (PackageManager.NameNotFoundException e) {
}
It will just launch another app by its package name
它只会通过包名启动另一个应用程序