2012-02-26 7 views
0

最近起動したアプリをより正確に監視するアプリケーションを作成しています。各アプリが起動した回数をテストします。このため最近のアプリの開始時期を知る方法はありますか?

私が使用しています:

final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
final List<RecentTaskInfo> recentTasks = activityManager.getRecentTasks(20,ActivityManager.RECENT_WITH_EXCLUDED); 

for (int i = 0; i < recentTasks.size(); i++) { 
Intent baseIntent = recentTasks.get(i).baseIntent; 
if(baseIntent != null) { 

Log.d("Text", "Application executed: " + i + ": baseIntent: " + baseIntent.getComponent().getPackageName() + baseIntent.getComponent().getClassName()); 

     } 

問題は、それが十分ではないということです。アプリが3回起動した場合は、1回だけ取得します。

これはアプリがいつ開始されたかを知る必要があります。

答えて

0

ログカット からログを読み取るオプションがあります。アクティビティが開始されるたびに簡単に見つけることができます。

+0

返信いただきありがとうございます。ええ、これは前に実装された方法です。 その問題は、その重い読書が数時間のログになることです。ログがあるデバイスから別のデバイスに異なることがあり、将来のバージョンで変更される可能性があります... – ZiviMagic

1

2年後に転記しますが、その場合に役立ちます。私のの回答はこちら。現在実行中のすべてのアプリケーションを含むリスト taskinfo を使用

Android how to know an app has been started and range apps priority according the starting times

、あなたはおそらくの共有設定で追跡したい各アプリをカウントを維持することができます。したがって、あなたは最近のアプリと何回起動するかを監視することができます。

0
package com.example.sample; 

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import android.app.Activity; 
import android.app.ActivityManager; 
import android.app.ActivityManager.RecentTaskInfo; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final ArrayList<String> al = new ArrayList<String>(); 
     Context context = this.getApplicationContext(); 
     ActivityManager mgr = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE); 
     List<ActivityManager.RecentTaskInfo> recentTasks = mgr.getRecentTasks(100,ActivityManager.RECENT_WITH_EXCLUDED); 
     for(Iterator i = recentTasks.iterator(); i.hasNext();) 
      { 
      RecentTaskInfo p = (RecentTaskInfo)i.next();  
     String output=p.baseIntent.getComponent().getPackageName(); 
       al.add(output); 
      } 

     Button button1=(Button) findViewById(R.id.button1); 
     button1.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        // write on SD card file data in the text box 
       try { 

        Log.e("DEBUG", "Recently started tasks"); 
        FileWriter outFile = new FileWriter("/sdcard/sdcard/Notes/task.txt"); 
        BufferedWriter outStream = new BufferedWriter(outFile); 
        for (int k = 0; k < al.size(); k++) 
        { 
         outStream.write(al.get(k)); 
        outStream.write("\n"); 

        } 
        outStream.close(); 
        // System.out.println("Data saved."); 
       } 

     //outStream.write(output); 
     //al.add 
         //outStream.write("\n"); 

              // outStream.close(); 



     catch (Exception e) { 
        Toast.makeText(getBaseContext(), e.getMessage(), 
          Toast.LENGTH_SHORT).show(); 
       } 
       }// onClick 
      }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    }} 
関連する問題