我是android开发新手,所以我需要你的帮助。我在互联网上搜索了所有,但找不到解决方案,所以最后我决定在这里发布... 因为我是一个新手,请给我更多的信息,你可以。如何让用户编辑按钮的应用程序链接?
下面是我在做什么...
我上的活动测试,几个按钮,当用户长按它会打开按钮
(MAIN_ACTIVITY)所有应用程序的列表安装
。而当用户选择一个应用程序时,它会获取相应的软件包名称并返回到测试活动。现在,当用户点击按钮时,它将打开新的应用程序(在返回测试活动之前选择该应用程序)。在快捷方式用户应该有能力像(应用程序链接,图标,标题)动态编辑按钮。
现在,这里是我的问题是什么...
我体健实现上述但它仅适用于只有1个按钮。我的意思是其他按钮做同样的事情。这让我疯狂...... 如果你们需要xml代码,请让我知道。 在此先感谢你们。
测试活动
package com.example.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.ListView;
public class Test extends Activity implements OnLongClickListener,
OnClickListener {
final int APPLIST_REQUEST_CODE = 12345;
final int APPLIST_REQUEST_CODE2 = 2;
String pac, pac2;
private ListView mListAppInfo;
Button bBrowser, bCalculator, bExit;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
bBrowser = (Button) findViewById(R.id.bBrowser);
bExit = (Button) findViewById(R.id.bExit);
bCalculator = (Button) findViewById(R.id.bCalculator);
bBrowser.setOnClickListener(this);
bBrowser.setOnLongClickListener(this);
bCalculator.setOnClickListener(this);
bCalculator.setOnLongClickListener(this);
bExit.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.bBrowser:
Intent i = getPackageManager().getLaunchIntentForPackage(pac);
startActivity(i);
break;
case R.id.bCalculator:
Intent i1 = getPackageManager().getLaunchIntentForPackage(pac2);
startActivity(i1);
break;
case R.id.bExit:
finish();
break;
}
}
@Override
public boolean onLongClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.bBrowser:
Intent a = new Intent("android.intent.action.APP_LIST");
startActivityForResult(a, APPLIST_REQUEST_CODE);
break;
case R.id.bCalculator:
Intent a2 = new Intent("android.intent.action.APP_LIST");
startActivityForResult(a2, APPLIST_REQUEST_CODE2);
break;
}
return false;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == APPLIST_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
pac = data.getStringExtra("key");
}
} else if (requestCode == APPLIST_REQUEST_CODE2) {
if (resultCode == Activity.RESULT_OK) {
pac2 = data.getStringExtra("key");
}
}
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
// super.onBackPressed();
}
}
主要活动
package com.example.test;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView mListAppInfo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
mListAppInfo = (ListView) findViewById(R.id.lvApps);
AppInfoAdapter adapter = new AppInfoAdapter(this,
Utilities.getInstalledApplication(this), getPackageManager());
mListAppInfo.setAdapter(adapter);
mListAppInfo.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos,
long id) {
AppInfoAdapter appInfoAdapter = (AppInfoAdapter) parent
.getAdapter();
ApplicationInfo appInfo = (ApplicationInfo) appInfoAdapter
.getItem(pos);
Intent a = new Intent();
a.putExtra("key", appInfo.packageName);
setResult(Activity.RESULT_OK, a);
finish();
}
});
}
}
首先感谢答复Jong。你的回答是有道理的, 所以我不应该使用BUNDLE来检索包名,如果我错了,请纠正我。我应该使用onActivityResult。 因此,如何在main_activity中选择应用程序时获取包名,并通过onActivityResult将结果(包名)返回给test_activity。 在你提到的链接的帮助下,我得到了这个概念,但没有完全理解要写什么。你能给我一些代码或一些教程链接的信息。 谢谢 – user2551070
增加了一些例子。 – Jong
Hey Jong,我在onActivityResult上得到一个错误,它说“方法getString(String,String)对于Intent类型是未定义的,我在哪里做错误了??还有什么在bBrowser&bCalculator上对click监听器所以他们可以打开不同的应用程序 – user2551070