私はアンドロイド開発が初めてなので、皆さんの助けが必要です。インターネット全体を検索しましたが、解決策が見つからなかったので、最終的にここに投稿することにしました...私は初心者なので、できるだけ多くの情報を教えてください。
これが私がやっていることです...
アクティビティテストのボタンはほとんどありません。ユーザーがボタンを長押しすると、
(MAIN_ACTIVITY)インストールされているすべてのアプリのリスト。ユーザーがアプリを選択すると、
それぞれのパッケージ名と TEST アクティビティに戻ります。ユーザーがボタンをクリックすると、新しいアプリが開きます(テストアクティビティに戻る前に選択されていました)。
ショートカットでは、ユーザーは(アプリリンク、アイコン、タイトル)のようにボタンを動的に編集できる必要があります。
ここに私の問題があります...
上記を達成できましたが、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();
}
});
}
}