你好
我想使用spinner,切換ImageView的圖片,在Kebbi上單獨測試APP是正常可運作的
但是APP到導入NUWA SDK會有問題Permission NOT granted: android.permission.INSTALL_PACKAGES
請問該如何解決呢?
- 
spinner 的部分


 - 
導入SDK前後


 
你好
我想使用spinner,切換ImageView的圖片,在Kebbi上單獨測試APP是正常可運作的
但是APP到導入NUWA SDK會有問題Permission NOT granted: android.permission.INSTALL_PACKAGES
請問該如何解決呢?
spinner 的部分


導入SDK前後


@chuangwater2487 NuwaSDK確實有宣告這兩個permission, 但在一般情況下應該是不會因為宣告了而造成程式異常。
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
可否分享更多點的程式片斷讓我幫忙看看,我在想會不會是你判斷權限的地方若有一個permission沒有被grant就把整個行為檔掉。
如果是的話,可能要請你調整一下判斷,ignore讓INSTALL_PACKAGES permission不會因為沒有grant而檔掉你的行為。
我覺得跟我猜的差不多^^"
你每次click item都會檢查一次所有宣告的權限  (包含你宣告的+NuwaSDK Manifest內宣告的)

但由於 nuwa sdk 內宣告的這兩個,因為這兩個要系統APP才能取得權限,因此你們永遠都無法取得權限
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
這導致了你的allPermissionsGranted() 永遠都會回傳false.
我猜測你們這段權限判斷,是不是只是想確保每次click run time permission都有被允許??
一般來說(Google建議)runtime permission都要在一開APP的時候就確認
底下給個sample code參考一下,你只需要針對runtime permission在一開始的時候確認即可,一但取得權限了,通常不會在APP UI執行期間重複的檢查
private static final int PERMISSION_REQUEST_PERM = 101;
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
                && checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            this.requestPermissions();
        }else{
            checkSystemWritePermission();
        }
}
private void requestPermissions() {
        String[] permissions = new String[] {
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.READ_PHONE_STATE};
        ActivityCompat.requestPermissions(this, permissions, PERMISSION_REQUEST_PERM );
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case LOCATION_PERM:
                if  (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                    Log.e(TAG, "Coarse location permission is not granted!");
                    finish();
                }
                break;
        }
    }