1

アクティビティを起動する私の TestApp には、次のコードがあります。

public void startOperaView() {
        Intent browserIntent = new Intent("org.droidtv.nettvbrowser.VIEW");
        Uri luri = Uri.parse("connectedplanet.tv/olvs/test");

        //browserIntent.setClass(getApplicationContext(), Browser.class);
        //browserIntent.setAction("org.droidtv.nettvbrowser.VIEW");
        browserIntent.setType("application/vnd.droidtv.sta");
        browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
        browserIntent.setData(luri);

        startActivity(browserIntent);
    }

また、パッケージ「org.droidtv.nettvbrowser」には、次の AndroidManifest.xml ファイルがあります。

<activity
            android:name="org.droidtv.nettvbrowser.Browser"
            android:configChanges="locale"
            android:label="@string/app_name" >
            <intent-filter>
             <action android:name="org.droidtv.nettvbrowser.VIEW" />
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
             <category android:name="android.intent.category.DEFAULT" />
             <data android:mimeType="application/vnd.droidtv.sta" />

            </intent-filter>
        </activity>

奇妙な部分は、インテントで実際のパッケージ名を指定すると、正常に動作するように見えることです。アクション インテントのみがこれらのエラーをスローしています。

4

1 に答える 1

0

http://developer.android.com/guide/topics/manifest/activity-element.htmlを参照すると、設定を試すことができますandroid:exported="true"

android:exported

他のアプリケーションのコンポーネントによってアクティビティを起動できるかどうか — 起動できる場合は「true」、起動できない場合は「false」。「false」の場合、アクティビティは、同じアプリケーションのコンポーネントまたは同じユーザー ID を持つアプリケーションによってのみ起動できます。デフォルト値は、アクティビティにインテント フィルタが含まれているかどうかによって異なります。フィルターがないということは、正確なクラス名を指定することによってのみアクティビティを呼び出すことができることを意味します。これは、アクティビティがアプリケーション内部での使用のみを目的としていることを意味します (他のユーザーはクラス名を知らないため)。したがって、この場合、デフォルト値は「false」です。一方、少なくとも 1 つのフィルターが存在するということは、そのアクティビティーが外部での使用を意図していることを意味するため、デフォルト値は「true」です。

この属性は、他のアプリケーションへのアクティビティの公開を制限する唯一の方法ではありません。アクセス許可を使用して、アクティビティを呼び出すことができる外部エンティティを制限することもできます (アクセス許可属性を参照してください)。

または、次のようなものを参照できます。

<activity android:name="OutgoingCallBroadcaster"
        android:theme="@android:style/Theme.NoDisplay"
        android:permission="android.permission.CALL_PHONE"
        android:configChanges="orientation|screenSize|keyboardHidden">
    <!-- CALL action intent filters, for the various ways
         of initiating an outgoing call. -->
    <intent-filter>
        <action android:name="android.intent.action.CALL" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="tel" />
    </intent-filter>
    <intent-filter android:icon="@drawable/ic_launcher_sip_call">
        <action android:name="android.intent.action.CALL" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="sip" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.CALL" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="voicemail" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.CALL" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="vnd.android.cursor.item/phone" />
        <data android:mimeType="vnd.android.cursor.item/phone_v2" />
        <data android:mimeType="vnd.android.cursor.item/person" />
    </intent-filter>
</activity>
于 2013-04-08T08:43:00.430 に答える