android端末から使用アプリの履歴等の情報を取得するコードを書いています。
permissionで記述もして端末側でも[設定]からアプリの使用履歴アクセス許可をonにしました
。
実行すると、エミュレータでの起動は上手くいき、正常に動作するのですが、
検証機にてapkファイルをインストールして、アプリを実行すると問題が発生してアプリが開きません。
アプリの使用履歴アクセス許可をoffにすると使用履歴アクセスは上手く動作しないもののアプリの起動はします。
Usage系が問題なのはなんとなくわかるのですがどうして良いのか全くわからず困っています。
何か他に設定等必要なのでしょうか?
ご教示の程、宜しくお願い致します。
public class MainActivity extends AppCompatActivity { public ArrayList<String> array = new ArrayList<String>(); String result = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = (TextView) findViewById(R.id.test_01); usagestatsmanager(); setText(); textView.setText(result); } // UsageStats,UsageStatsManager : デバイスの使用履歴、統計情報 @TargetApi(21) private void usagestatsmanager() { UsageStatsManager usm = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE); int intTime = UsageStatsManager.INTERVAL_MONTHLY; Long end = System.currentTimeMillis(); Long start = end - (10 * 24 * 60 * 60 * 1000); List<UsageStats> usl = usm.queryUsageStats(intTime, start, end); // 端末にインストール済のアプリケーション一覧情報を取得 PackageManager pm = getPackageManager(); int flags = PackageManager.GET_UNINSTALLED_PACKAGES; List<ApplicationInfo> appList = pm.getInstalledApplications(flags); int useTime = 0; int n = 0; for (int i = 0; i < usl.size(); i++) { UsageStats us = usl.get(i); if (us.getTotalTimeInForeground() != 0) { // リストに一覧データを格納する for (int m = 0; m < appList.size(); m++) { ApplicationInfo app = appList.get(m); if (app.packageName.equals(us.getPackageName())) { array.add((n + 1) + "個目のアプリケーション"); array.add(app.loadLabel(pm).toString()); array.add("パッケージ名:" + String.valueOf(us.getPackageName())); useTime = ((int)us.getTotalTimeInForeground()); array.add(String.valueOf(String.valueOf(useTime)); array.add(""); n++; } } } } } private void setText () { //改行コード String crlf = "\n"; crlf = System.getProperty("line.separator"); //表示文字列をセット result = array.get(0) + crlf; for (int i = 1; i < array.size(); i++) { result += array.get(i) + crlf; } } }
以下、パーミッションの記述になります。
<uses-permission xmlns:tools="http://schemas.android.com/tools" android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore = "ProtectedPermissions"/>
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー