大家好我,获取完应用的相关数据后,把数据显示在listview上,点击想进入相应的应用但是,每次都进不去,不知道为什么,大家给些意见,代码如下package com.mainroadlee.appdisplayer;import java.util.ArrayList;
import java.util.List;
import com.mainroadlee.appdisplayer.R;import dalvik.system.TemporaryDirectory;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;public class Main extends Activity {
private static final String TAG = "Main";
// Use ArrayList to store the installed non-system apps
ArrayList<AppInfo> appList = new ArrayList<AppInfo>();
private Button button; // ListView app_listView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.testApps);
button.setOnClickListener(new ButtonClickListener());
List<PackageInfo> packages = getPackageManager()
.getInstalledPackages(0); for (int i = 0; i < packages.size(); i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(
getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo
.loadIcon(getPackageManager());
appList.add(tmpInfo); }
for (int i = 0; i < appList.size(); i++) {
appList.get(i).print();
} // Populate data to listView
ListView app_listView = (ListView) findViewById(R.id.listview);
AppAdapter appAdapter = new AppAdapter(Main.this, appList); // app_listView.setAdapter(appAdapter);
app_listView.setDividerHeight(5);
app_listView.setOnItemClickListener(new ListViewOnItemClickListener());
if (app_listView != null) {
app_listView.setAdapter(appAdapter);
}
} /**
*
* @author shihx
*
*/
public class ListViewOnItemClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> av, View v, int position,
long arg3) {
// TODO Auto-generated method stub
AppInfo tmpInfo = appList.get(position);
Intent intent = new Intent();
Toast.makeText(Main.this, tmpInfo.getPackageName()+"."+tmpInfo.getAppName(), 1).show();
intent.setClassName(tmpInfo.getPackageName(),tmpInfo.getPackageName()+"."+tmpInfo.getAppName());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivitySafely(intent);
}
} void startActivitySafely(Intent intent) {
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, R.string.activity_not_found,
Toast.LENGTH_SHORT).show();
} catch (SecurityException e) {
Toast.makeText(this, R.string.activity_not_found,
Toast.LENGTH_SHORT).show();
Log.i(TAG,
"Showbook does not have the permission to launch "
+ intent
+ ". Make sure to create a MAIN intent-filter for the corresponding activity "
+ "or use the exported attribute for this activity.",
e);
}
} public class ButtonClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(Main.this, AppsShowActivity.class);
startActivity(intent);
} } public class AppAdapter extends BaseAdapter { Context context;
ArrayList<AppInfo> dataList = new ArrayList<AppInfo>(); public AppAdapter(Context context, ArrayList<AppInfo> inputDataList) {
this.context = context;
dataList.clear();
for (int i = 0; i < inputDataList.size(); i++) {
dataList.add(inputDataList.get(i));
}
} @Override
public int getCount() {
// TODO Auto-generated method stub
return dataList.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return dataList.get(position);
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) { View v = convertView;
final AppInfo appUnit = dataList.get(position);
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.app_row, null);
v.setClickable(true);
}
TextView appName = (TextView) v.findViewById(R.id.appName);
ImageView appIcon = (ImageView) v.findViewById(R.id.icon);
if (appName != null)
appName.setText(appUnit.appName);
if (appIcon != null)
appIcon.setImageDrawable(appUnit.appIcon);
return v;
}
}
}
import java.util.List;
import com.mainroadlee.appdisplayer.R;import dalvik.system.TemporaryDirectory;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;public class Main extends Activity {
private static final String TAG = "Main";
// Use ArrayList to store the installed non-system apps
ArrayList<AppInfo> appList = new ArrayList<AppInfo>();
private Button button; // ListView app_listView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.testApps);
button.setOnClickListener(new ButtonClickListener());
List<PackageInfo> packages = getPackageManager()
.getInstalledPackages(0); for (int i = 0; i < packages.size(); i++) {
PackageInfo packageInfo = packages.get(i);
AppInfo tmpInfo = new AppInfo();
tmpInfo.appName = packageInfo.applicationInfo.loadLabel(
getPackageManager()).toString();
tmpInfo.packageName = packageInfo.packageName;
tmpInfo.versionName = packageInfo.versionName;
tmpInfo.versionCode = packageInfo.versionCode;
tmpInfo.appIcon = packageInfo.applicationInfo
.loadIcon(getPackageManager());
appList.add(tmpInfo); }
for (int i = 0; i < appList.size(); i++) {
appList.get(i).print();
} // Populate data to listView
ListView app_listView = (ListView) findViewById(R.id.listview);
AppAdapter appAdapter = new AppAdapter(Main.this, appList); // app_listView.setAdapter(appAdapter);
app_listView.setDividerHeight(5);
app_listView.setOnItemClickListener(new ListViewOnItemClickListener());
if (app_listView != null) {
app_listView.setAdapter(appAdapter);
}
} /**
*
* @author shihx
*
*/
public class ListViewOnItemClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> av, View v, int position,
long arg3) {
// TODO Auto-generated method stub
AppInfo tmpInfo = appList.get(position);
Intent intent = new Intent();
Toast.makeText(Main.this, tmpInfo.getPackageName()+"."+tmpInfo.getAppName(), 1).show();
intent.setClassName(tmpInfo.getPackageName(),tmpInfo.getPackageName()+"."+tmpInfo.getAppName());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivitySafely(intent);
}
} void startActivitySafely(Intent intent) {
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, R.string.activity_not_found,
Toast.LENGTH_SHORT).show();
} catch (SecurityException e) {
Toast.makeText(this, R.string.activity_not_found,
Toast.LENGTH_SHORT).show();
Log.i(TAG,
"Showbook does not have the permission to launch "
+ intent
+ ". Make sure to create a MAIN intent-filter for the corresponding activity "
+ "or use the exported attribute for this activity.",
e);
}
} public class ButtonClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(Main.this, AppsShowActivity.class);
startActivity(intent);
} } public class AppAdapter extends BaseAdapter { Context context;
ArrayList<AppInfo> dataList = new ArrayList<AppInfo>(); public AppAdapter(Context context, ArrayList<AppInfo> inputDataList) {
this.context = context;
dataList.clear();
for (int i = 0; i < inputDataList.size(); i++) {
dataList.add(inputDataList.get(i));
}
} @Override
public int getCount() {
// TODO Auto-generated method stub
return dataList.size();
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return dataList.get(position);
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) { View v = convertView;
final AppInfo appUnit = dataList.get(position);
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.app_row, null);
v.setClickable(true);
}
TextView appName = (TextView) v.findViewById(R.id.appName);
ImageView appIcon = (ImageView) v.findViewById(R.id.icon);
if (appName != null)
appName.setText(appUnit.appName);
if (appIcon != null)
appIcon.setImageDrawable(appUnit.appIcon);
return v;
}
}
}
解决方案 »
- 大神们..SQLite查询问题..请帮我看下这是什么情况
- Android如何直接链接到默认浏览器
- Java EE,Android程序员面试宝典(面试前瞅瞅,助你拿高薪哦)
- 求一android游戏控制器的demo
- 求助,关于匿名binder的问题
- 用代码如何判断android手机SD卡或内存已满?
- Handler.postDelayed和View.postDelayed有何区别
- 导航栏模拟器显示正常,真机显示乱码,求教!
- 急!点击一按钮后,要隔1分钟才能再次操作一次,求算法实例
- HBuilder 移动App 安卓手机指纹识别
- android 接入网络类型
- 写了一个service程序运行一段时间好像就自动关闭了?
intent.setClassName 这个方法的参数是一定的
你可以把你传进去的值打印以下 比较有什么区别 ,再搜搜实际应该怎么启动那个应用
比如你点击一个UC 浏览器试试 看看你实际传入的值是什么。还有网上资料上应该怎么样调用
2、启动其他浏览器(当然该浏览器必须安装在机器上)
只要修改以下相应的packagename 和 主启动activity即可调用其他浏览器 intent.setClassName("com.android.browser","com.android.browser.BrowserActivity"); uc浏览器":"com.uc.browser", "com.uc.browser.ActivityUpdate“
opera:"com.opera.mini.android", "com.opera.mini.android.Browser"
qq浏览器:"com.tencent.mtt", "com.tencent.mtt.MainActivity"出错 还是先打印日志看看
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);