2016-06-21 3 views
3

Hello WorldをTextView要素に配置するHello Worldアプリを作成すると、アプリは「電話のステータスとIDを読み込みます」と、 SDカードの内容の変更と削除」を参照してください。いずれの権限への参照も、どこからでも(プロジェクトフォルダ全体を再帰的にgreppingしても)見つけることはできません。コンパイルするすべてのAndroidアプリは、Hello Worldアプリの場合でも一部の権限を要求します。

ランダムアクセス権を要求している自分のアプリケーションについてユーザーが文句を言うさまざまなスレッドがあり、ライブラリ依存性がそれを使用することが判明しました。私はライブラリを使用していません。私の輸入品はandroid.app.Activityandroid.widget.TextViewおよびandroid.os.Bundleです。何<uses-permission ...がない

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="helloworld.test" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:label="@string/app_name"> 
     <activity android:name="helloactivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

注:私のAndroidManifest.xmlはこれを含んでいます。 libsフォルダは空です。 resフォルダーには、それぞれxmlファイルを含む2つのフォルダーが含まれています.1つはレイアウト(LinearLayoutTextView要素を含む)です。もう1つはアプリケーション名のvalues/strings.xmlです。

最後に、.apkファイルもチェックして、バイナリAndroidManifest.xmlファイルをデコードしました(カスタムバイナリ形式にコンパイルされています)。これは元のファイルと同じです。コンパイル時には何も追加しません。

私がテストできるすべてのデバイス:2台のAndroid 4.4デバイスと5.1デバイスにアクセス権が要求されています。

編集:より多くのいくつかの周りを見ると、それはこのように聞こえる:?それは何かのだろう、私はAPIレベル19 ~~をターゲットにしていますWhy is my app asking for phone id permission?

~~編集2:気にしないで、レベル23に対してコンパイルするなしになります差異/編集2.私は本当に彼らが持ってはならない許可を求めるアプリ(有名な懐中電灯アプリの例)が嫌いですが、古い携帯電話でも実行したいのです。

コメントに応じて、このプロジェクトはgradleではなくantを使用しています。このコメントを剥奪build.xmlファイル、である:それはありませんでした、大事最小 SDKのバージョンであることが判明し

package helloworld.test; 

import android.app.Activity; 
import android.widget.TextView; 
import android.os.Bundle; 

public class skeletonactivity extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     TextView out = (TextView) findViewById(R.id.output); 
     out.setText("Hello World."); 
    } 
} 
+0

あなたのアクティビティのコードとあなたのbuild.gradleを投稿してください。 – earthw0rmjim

+0

@ user13完了。ありがとう – Luc

+0

アプリは何を求めているのですか?また、なぜbuild.gradleではなくbuild.xmlが必要なのか不明です。 Android Studioを使用していませんか? – Akshay

答えて

2

<?xml version="1.0" encoding="UTF-8"?> 
    <project name="helloworld" default="help"> 
    <property file="local.properties" /> 
    <property file="ant.properties" /> 
    <property environment="env" /> 
    <condition property="sdk.dir" value="${env.ANDROID_HOME}"> 
     <isset property="env.ANDROID_HOME" /> 
    </condition> 
    <loadproperties srcFile="project.properties" /> 
    <fail message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable." unless="sdk.dir" /> 
    <import file="custom_rules.xml" optional="true" /> 
    <import file="${sdk.dir}/tools/ant/build.xml" /> 
</project> 

そして最後にJavaコードandroid create projectによって生成されたプロパティさえあります。 target=android-19(またはcreate projectコマンドで指定したターゲット)を含むproject.propertiesファイルが生成されました。 minSdkVersionなし

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

、それは静かにそうあなた<application>タグの、この行は右<manifest ...>下に来るバージョン1がデフォルトになります。このようなラインを持っているAndroidManifest.xmlあなたしなければならないで

これらの特定のアクセス許可については、これらを削除するにはAPIレベル4が必要です。 minSdkVersion 3を使用しているときは、依然として権限が要求されます。

+0

あなたは自分の答えを受け入れることができる/受け入れるべきである – barlop

+0

@barlopああ、それは私がそれを忘れさせる "あなたは2日間で自分の答えを受け入れることができる"と言いました。 – Luc

関連する問題