2017-07-31 34 views
0

私は質問hereを見つけましたが、パッケージ名を確認します。私が望むのは、インストールされている場合はURL(例:https://www.facebook.comまたはhttps://www.twitter.com)を確認してネイティブアプリで開いてください。インストールされていない場合はブラウザで開きます。ブラウザではなくネイティブアプリでURLを開くにはどうすればよいですか?

String url = "https://www.facebook.com"; 

if (hasNativeApp()) { 
    // open in native app 
} else { 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    startActivity(intent); 
} 
+0

アプリをインストールした状態で 'ACTION_VIEW'を起動するとどうなりますか? 'https'の代わりに' http'を試しましたか? – JimmyB

+0

アプリケーションを識別するためにパッケージ名が必要です。インストールされている天気アプリをそのリンクからチェックすることはできません。 –

+0

webviewを使用して設定を行う –

答えて

0

すると、このアプリがインストールされているチェックしようか

Intent linkedinIntent = new Intent(Intent.ACTION_SEND); 
linkedinIntent.putExtra(Intent.EXTRA_TEXT, "DATA"); 
linkedinIntent.setType("text/plain"); 
boolean linkedinAppFound = false; 

List<ResolveInfo> matches2 = this.getPackageManager() 
     .queryIntentActivities(linkedinIntent, 0); 

for (ResolveInfo info : matches2) { 
    if (info.activityInfo.packageName.toLowerCase().startsWith(
      "com.linkedin")) { 
     linkedinIntent.setPackage(info.activityInfo.packageName); 
     linkedinAppFound = true; 
     break; 
    } 
} 
if (linkedinAppFound) { 
    Toast.makeText(MainActivity.this, "app found", Toast.LENGTH_LONG).show(); 
} else { 
    Toast.makeText(MainActivity.this, "app not found", Toast.LENGTH_LONG).show();  
} 

あなたは天気予報をチェックすることはできません

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> pkgAppsList = context.getPackageManager().queryIntentActivities(mainIntent, 0); 
+0

これを行うことで、事前にパッケージ名を知る必要があります。あらかじめリンクやパッケージ名がわからないとどうなりましたか? – Sam

+0

@Samは更新されたansを更新しました –

0

インストールされているすべてのアプリケーションのリストを取得するには、このを試してみてくださいアプリがインストールされているかどうかを確認してください。アプリケーションを識別するためにパッケージ名が必要です。

インストール済みかどうかを確認するには、次の機能を使用してください。 Facebookの

-あなたは、パッケージのFacebookの名やTwitterを探しているなら

com.facebook.katana:

public boolean appInstalledOrNot(Context context, String paramString) { 
    PackageManager localPackageManager = context.getPackageManager(); 
    try { 
     //noinspection WrongConstant 
     localPackageManager.getPackageInfo(paramString, 1); 
     return true; 
    } catch (PackageManager.NameNotFoundException ignored) { 
    } 
    return false; 
} 

String facebookPackage = "com.facebook.katana"; 

if (appInstalledOrNot(this,facebookPackage)) { 
    String url = "https://m.facebook.com"; 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    startActivity(intent); 
} else { 
    String url = "https://www.facebook.com"; 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    startActivity(intent); 
} 

NOTEネイティブアプリケーション

を開くためにこれを試してみてください

com.twitter.android - Twterter

+0

URLリンクを事前に知ることができない場合はどうなりましたか?ネイティブアプリが利用可能かどうかを確認するために、すべてのアプリのデータベースを維持することは不可能です。だから、それが利用可能な場合は、デフォルトでネイティブアプリでリンクを開くことはできませんし、それが利用できない場合はブラウザで開きますか?私の知りでは – Sam

+0

です。いいえ、それはできません。アプリはそのパッケージ名で識別できます。 –

+0

あなたがパッケージ名を心配している限り、あなたはいつも特定のアプリケーションのプレイストアリンクからそれを得ることができます。 –

関連する問題