5

この権限を使用して、アプリの使用状況データにアクセスする権限を取得しようとしています。これは Lollipop に対してのみ行われており、このインテント (android.settings.USAGE_ACCESS_SETTINGS) でアクティビティを開始すると、アプリがクラッシュします (以下のスタックトレース)。

別の開発者が LG G3 携帯電話でこの問題に気付いたことを確認しました -スレッドはこちら.ユーザー ログから、これは主に LG G3 で発生し、Samsung S5 でも 1 回発生することがわかりました。

アプリの使用状況データを取得するために LG & Samsung S3 電話のウィンドウを起動する正しい意図は何ですか?

誰かがこれらの電話のいずれかを持っていて、この「使用状況データを使用するアプリ」権限オプションが存在するかどうかをアドバイスできますか

android.content.ActivityNotFoundException: No Activity found to handle   Intent { act=android.settings.USAGE_ACCESS_SETTINGS }
at     android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1801)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1499)
at android.app.Activity.startActivityForResult(Activity.java:3913)
at android.app.Activity.startActivityForResult(Activity.java:3860)
at     android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivi    ty.java:849)
at android.support.v4.app.Fragment.startActivity(Fragment.java:880)
at     com.mavdev.focusoutfacebook.fragments.addablock.apps.Fragment_appsselect_addbloc    k$2.onClick(Fragment_appsselect_addblock.java:182)
at android.view.View.performClick(View.java:5162)
at android.view.View$PerformClick.run(View.java:20873)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5834)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at      com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)

ここに私のマニフェストファイルがあります:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="hidden"
android:installLocation="internalOnly"
android:versionCode="50"
android:versionName="2.0.5" >

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="19" />

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>    

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />

<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<application
    android:allowBackup="true"
    android:allowClearUserData="true"
    android:hardwareAccelerated="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/MyActionBarTheme"
    android:vmSafeMode="true" >
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />


</application>

</manifest>

Lollipop を搭載した実際の LG デバイス (または Samsung S3) をテスト用に持っていません。Android 5.0 (API21) を搭載した Genymotion Emulator でのみテストしており、正常に動作します。

4

3 に答える 3

0

Google nexus 5.0 とエミュレーターで同じコードを確認しましたが、問題なく動作します。

[設定] --> [セキュリティ] --> [APPS の使用状況] の下で、最初にデバイス リストにアプリを確認します。

以下のコードを試して、アプリケーションで使用アクセスが有効になっているかどうかを確認してください

Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivity(intent);


try {
PackageManager packageManager = context.getPackageManager();
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), 0);
AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
int mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, applicationInfo.uid, applicationInfo.packageName);
return (mode == AppOpsManager.MODE_ALLOWED);

} catch (PackageManager.NameNotFoundException e) {
return false;
}

また、このリンクを参照することもできますこのリンク

于 2015-02-16T06:15:06.817 に答える
-5

そのようなマニフェストxmlにアクティビティを追加する必要があります

(申請中)

<activity
       android:name="com.yournamespace.yourclassname"
       android:label="@string/app_name" >           
</activity>
于 2015-02-06T08:59:13.603 に答える