没试验过,下面是在javaeye里面看到的开启另一个应用的代码,希望对你有用
private void start()
{
Intent intent = new Intent();
try
{
intent.setClassName(getApplicationContext().createPackageContext(
"com.example",
android.content.Context.CONTEXT_IGNORE_SECURITY),
"com.example.ExampleActivity");
}
catch (NameNotFoundException e)
{
e.printStackTrace();
}
startActivity(intent);
}
private void start()
{
Intent intent = new Intent();
try
{
intent.setClassName(getApplicationContext().createPackageContext(
"com.example",
android.content.Context.CONTEXT_IGNORE_SECURITY),
"com.example.ExampleActivity");
}
catch (NameNotFoundException e)
{
e.printStackTrace();
}
startActivity(intent);
}
解决方案 »
- 关于CTS编译的问题
- 我做了个android视频监控传输程序,运行了一会儿死机了,怎么样才能找到问题所在?
- android2.3中应用程序“时钟”的背景与桌面背景是同步的,请问在源码中是如何实现的?
- WebView在4.2上有时是空白界面??在2.3上是可以的
- Android usb供电可以关闭吗
- Android模拟器横竖屏不能切换,太奇怪了!!!
- 【反汇编软件分享】写了个Android系统下的x86反汇编器,欢迎捧场
- 送分!imsdroid无法登陆
- android sdk
- 关于如何在BroadcastReceiver启动多个service
- AVD 模拟器中Camera键的问题
- db.delete返回的值是什么意思
感谢您回答 但是 目前我是能把系统所有已安装的包列表出来
我现在需要用户点击某个包就启动 这个如何来做 需要往intent里怎么传值
/* StartActivity
* 启动对应app
* in : classname 应用程序的类名
* packagename 应用程序的package名字
*/
public void StartActivity(String classname, String packagename){
Log.i("APP","StartActivity");
Log.i("APP","classname:"+classname);
Log.i("APP","packagename:"+packagename); Intent myi = new Intent(this, ScriptSearch.class);
myi.setClassName(packagename, classname);
myi.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(myi);
}
//处理应用搜索
List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
mApps = LoadApps();
ResolveInfo info = mApps.get(i);
//获取app应用名称
CharSequence name = info.activityInfo.loadLabel(mMain.getPackageManager());
String appname = name.toString();
//Log.i("APP",info.activityInfo.applicationInfo.packageName);//packageName
//Log.i("APP",info.activityInfo.name); //classname你需要对你的list创建一个适配器,然后每项列表项用一个类来表示,存储着指定的packageName和classname,这样你点击的时候就根据各自项的包名和类名来启动指定应用
* 检测该apk应用程序是否存在,若存在返回一个跳转到他的intent。
*
* @param gameName
* 程序的lable
* @return 返回启动的intent或返回null
*/
public static Intent loadApplications(String gameName) {
String category = "";
List<ResolveInfo> targApps = null;
category = "android.intent.category.***";//要启动程序的category,mainfest.xml中主activity中配置
targApps = BaseControl.apps;//获取所有的apps List<ResolveInfo> apps
// 获取所有包
Collections.sort(targApps, new ResolveInfo.DisplayNameComparator(
manager));
if (targApps != null) {
int count = targApps.size();
for (int i = 0; i < count; i++) {
ResolveInfo info = targApps.get(i);
Uri uri = Uri.fromParts("package",
info.activityInfo.packageName, null);
String appName = info.loadLabel(manager).toString();
//程序名字
if (gameName.equals(appName)) {
Intent appIntent = new Intent(Intent.ACTION_MAIN);
ComponentName className = new ComponentName(
info.activityInfo.applicationInfo.packageName,
info.activityInfo.name);
int launchFlags = Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED;
appIntent.addCategory(category);
appIntent.setComponent(className);
appIntent.setFlags(launchFlags);
return appIntent;
}
}
}
return null;
}
Intent intent = new Intent();
intent.setClassName("us.imnet.iceskysl.db","us.imnet.iceskysl.db.DBSharedPreferences");
//intent.setClassName("com.test1","com.test1.TestActivity1");
startActivity(intent);
intent.setComponent(new ComponentName(pkgName, activityName));
//pkgName 应用程序的包名
//activityName 应用程序中的activity名字
startActivity(intent);