Warning: include(/home/users/2/lolipop.jp-a-virtual/web/dhmo/dhmo/wp-content/advanced-cache.php): failed to open stream: No such file or directory in /home/users/2/lolipop.jp-a-virtual/web/dhmo/dhmo/wp-settings.php on line 74

Warning: include(/home/users/2/lolipop.jp-a-virtual/web/dhmo/dhmo/wp-content/advanced-cache.php): failed to open stream: No such file or directory in /home/users/2/lolipop.jp-a-virtual/web/dhmo/dhmo/wp-settings.php on line 74

Warning: include(): Failed opening '/home/users/2/lolipop.jp-a-virtual/web/dhmo/dhmo/wp-content/advanced-cache.php' for inclusion (include_path='.:/usr/local/php/5.4/lib/php') in /home/users/2/lolipop.jp-a-virtual/web/dhmo/dhmo/wp-settings.php on line 74
androidアプリ一覧の出力と応用の方法 – Androidアプリつくったった

androidアプリ一覧の出力と応用の方法

アプリ一覧

android端末内のアプリ一覧の取得方法

以前、one touch severというアプリを作成しました。
androidではアカウントに購入情報が紐づいていますので
万が一、スマホ端末が故障して新しい端末にしても
有料アプリも購入済みとして無料で手に入ります。
しかし、そもそもアプリが何が入っていたかなんて
覚えていない人が大多数のはずです。
(※私の端末には現在390個のアプリが入っています)

そこでアプリのアプリの一覧をワンタッチで
簡単に送信できるアプリがあったら便利だなと作ってみました。
(所要時間:着想~リリースまで3時間程度)
そして今回、その際実際に使ったソースの主要部分を公開します。
 
まずはメインのアプリ情報の取得からです。
取得の可否でセットがズレないように工夫するところがポイントです。
もっとうまい方法があるかもしれません。
一覧表示も考えていたのでset1Row.classが分かれていますが、
Hash等でもいいような気がします。
リスト表示にも簡単に応用が利くはずです。

<< MainActivity.class >>側 

// アプリ名一覧の格納用変数
    ArrayList<String> appList = new ArrayList<String>();
//パッケージ名一覧の格納用変数
    static ArrayList<Uri> uriList = new ArrayList<Uri>();
//アプリ情報をまとめておくための配列
    static ArrayList<set1Row> rowApplist = new ArrayList<set1Row>();
//アプリデータを一旦受け取るための変数
    private  List<ApplicationInfo> appInfoList=null;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
//PackageManagerを取得
        pm= this.getPackageManager();
        appInfoList= pm.getInstalledApplications(BIND_AUTO_CREATE);
   		for(ApplicationInfo ai : appInfoList){
			if(ai==null){
				continue;
			}
			if(ai.loadLabel(pm).toString()!=null){
				//アプリ名を取り出し
				appList.add(ai.loadLabel(pm).toString());

			}else{
//名前が取得できないものがあってもズレないようにする工夫
				appList.add("NoName");
			}
			if(ai.packageName.toString()!=null){
				//パッケージ名を取得し、GooglePlayでのURLになるように成形する。
				uriList.add(Uri.parse("https://play.google.com/store/apps/details?id="+ai.packageName.toString()));
			}
		}
		for(int i=0;i<appList.size();i++){
//アプリの情報をまとめてパックしていく
			rowApplist.add(new set1Row(appList.get(i),uriList.get(i)));

		}

    }
//用がすんだらきちんとからにしておく。
    PackageManager pm=null;

続いて、set1Row.classです。
このクラスを使ってListViewの出力が可能です。

<< set1Row.class >>
※パッケージ名は略しています。

import android.net.Uri;

public class set1Row {
	private String appName;
	private String pacageName;
	private Uri appUri;

	public Uri getAppUri() {
		return appUri;
	}
	public void setAppUri(Uri appUri) {
		this.appUri = appUri;
	}
	public set1Row(String appName,Uri appUri) {
		this.appName = appName;
		this.appUri=appUri;
	}
	public void setNameIcon(String appName){
		this.appName=appName;
	}
	public String getAppName() {
		return appName;
	}
	public void setAppName(String appName) {
		this.appName = appName;
	}
}

◇応用取得したアプリデータをメールで送信する。

取得したアプリデータの一覧をメールアプリに引き渡し
送ってもらうための機構を紹介します
 
Gmailの機能で自動送信も可能ですが
このときはアプリの着想からリリースまでを3時間で
間に合わせる必要があったので
ボタンを押すと取得した内容を
Intentでメールアプリに託しメール送信するだけにしておきました。
 

    public void clickButton(View view) {
    	if (view.getId() == R.id.button2) {

			String str=" ";
			int i=0;
			for(set1Row r :rowApplist){
				str +=rowApplist.get(i).getAppName()+"\n";
				str +=rowApplist.get(i).getAppUri()+"\n";
				i++;
			}
//プリファレンスに設定したアドレスを取得しています。
			String strm= PreferenceManager.getDefaultSharedPreferences(
					getBaseContext()).getString(
							getResources().getString(R.string.app_name), DEFAULT);
			Uri uri=Uri.parse("mailto:" + strm);
			Intent intent=new Intent(Intent.ACTION_SENDTO,uri);
//メールのサブタイトルの設定
			intent.putExtra(Intent.EXTRA_SUBJECT,"アプリ一覧");
			intent.putExtra(Intent.EXTRA_TEXT,str);
			intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);		
			startActivity(intent);
    	}else if((view.getId() == R.id.button3)){
    		Intent intent = new Intent(this, SettingActivity.class);
    		startActivity(intent);
    	}
    }

時間を作れたら内部以上を感知して外部サーバに
自動送信するアプリ等を作ってみる予定です。

以上です。

参考になれば幸いです。


About the Author

dhmo
Author:DHMO(ディベロッパー名) 仕事では自社サービス・メディアの開発を行ってます。 趣味でAndroidアプリ製作を行っています。 カラオケではランキングバトルにはまっております。 Mail: dihydromooxide7@gmail.com 

Be the first to comment on "androidアプリ一覧の出力と応用の方法"

Leave a comment

Your email address will not be published.


*