跳转到相应应用不成功

passself 2012-03-18 03:31:55
大家好我,获取完应用的相关数据后,把数据显示在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,
"Showbookmark 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;
}
}
}
...全文
131 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
passself 2012-03-19
  • 打赏
  • 举报
回复
csdn咋现在人气这么差啊,高手呢?
passself 2012-03-19
  • 打赏
  • 举报
回复
我取到的值和点击得到的是一样的啊,不知道为什么就是跳转不过去
libRA_kin 2012-03-19
  • 打赏
  • 举报
回复
我想问题可能出在你的AppInfo 这个类的getAppName()上;
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"



出错 还是先打印日志看看
sf_key 2012-03-19
  • 打赏
  • 举报
回复
你这段启动代码是不是从Launcher里拿出来的?里边的某些参数应用层程序读出来有些问题,可以在知道程序包名的情况下使用如下方式启动:

Intent intent = context.getPackageManager().getLaunchIntentForPackage("packagename");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧