4

我試圖讓使用this權限來訪問應用程序使用數據的權限意圖android.settings.USAGE_ACCESS_SETTINGS推出活動時。這僅僅是正在做的棒棒糖,當我開始活動這個意圖(android.settings.USAGE_ACCESS_SETTINGS),應用程序崩潰(以下堆棧跟蹤)ActivityNotFoundException在棒棒堂試圖

觀察另一個開發人員注意到,在LG G3手機這個問題 - thread here。從用戶日誌,我主要看到這發生在LG G3和三星S5上。

什麼是啓動窗口LG &三星S3手機獲取應用程序的使用數據的權利意圖是什麼?

是否有人有這兩個電話,並可意見,如果這個「Apps的使用數據」的權限選項甚至存在

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> 

我不有一個真正的LG設備(甚至三星S3)與棒棒糖上測試。我只使用Android 5.0(API21)的Genymotion Emulator進行測試,效果很好。

+0

請粘貼您的清單。 – barq 2015-02-06 08:37:27

+0

剛剛添加了清單文件。我已經刪除了應用程序選項卡下的活動和接收器 - 休息都在那裏。 – user1406716 2015-02-06 08:41:54

+0

我沒有添加以下權限:「<用途的許可機器人:名稱=」 android.permission.PACKAGE_USAGE_STATS「/>」 – user1406716 2015-02-06 08:48:26

回答

-5

你需要添加活動清單XML這樣的

(正在申請)

<activity 
     android:name="com.yournamespace.yourclassname" 
     android:label="@string/app_name" >   
</activity> 
+0

我有我的活動和接收器已添加到應用程序標籤下。我沒有在這裏展示它(正如我在我的問題中提到的),因爲隱私的原因。 – user1406716 2015-02-06 09:04:40

+0

在任何情況下,必須在裏面,而不是在 Pelanes 2017-11-30 07:59:58

0

我檢查了相同的代碼對谷歌Nexus 5.0和仿真器,它工作得很好。它因此未顯示任何錯誤。意圖工作正常,應用程序使用訪問actvity也啓動,雖然它沒有列出任何應用程序下。

在設置 - >安全 - > 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; 
} 

,你也可以參考此鏈接this link

1

是否有人知道如何,以在該環境中的變化,代碼與

Context context = configuration.getContext(); 
ContentResolver resolver = context.getContentResolver(); 
resolver.registerContentObserver(Settings.System.CONTENT_URI, true, observer = new TimeoutSettingContentObserver(context, new Handler())); 

這裏是代碼:

PackageManager packageManager = getPackageManager(); 
final ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(), 0); 
appOpsManager = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE); 
appOpsManager.startWatchingMode(AppOpsManager.OPSTR_GET_USAG‌​E_STATS, 
     applicationInfo.packageName, 
     new AppOpsManager.OnOpChangedListener(){ 
      @Override public void onOpChanged(String op, String packageName) { 
       int mode = appOpsManager.checkOpNoThrow(op, applicationInfo.uid, packageName); 
       boolean enabled = mode == AppOpsManager.MODE_ALLOWED; 
      } 
     }); 
+0

但它不起作用低於api級別19 – 2016-01-14 09:12:39